摘要:使用之前安裝安裝并啟動它選擇或者用來測試,推薦第一個創(chuàng)建兩個文件和放在同一目錄下,第一次用的兩個坑,一個是沒啟動,一個就是這個了是設(shè)置文件,包含各種配置,必須存在一個名為的字典,定義了要提供的資源以字典形式表示在寫入如下內(nèi)容就不解釋了在中寫
使用之前
安裝 eve
安裝 mongodb, 并啟動它
選擇 curl或者postman 用來測試,推薦postman
創(chuàng)建兩個文件main.py 和 settings.py放在同一目錄下,第一次用eve的兩個坑,一個是mongodb沒啟動,一個就是這個setting.py了
settting.py是設(shè)置文件,包含各種配置,必須存在一個名為DOMAIN的字典,DOMAIN定義了要提供的資源 以字典形式表示
在settings.py寫入如下內(nèi)容
DOMAIN = {"people": {}}
main.py就不解釋了
在main.py中寫入如下內(nèi)容
from eve import Eve app = Eve() app.run()
Eve是基于Flask的,所以這樣的寫法對于用過Flask的人應(yīng)該很熟悉
然后運行 main.py 用postman做get請求訪問 http://127.0.0.1:5000 可以得到類似下面的結(jié)果
{ "_links": { "child": [ { "title": "people", "href": "people" } ] } }
Eve的api遵循HATEOAS原則,關(guān)于HATEOAS,可以看維基和這篇文章
之后用postman訪問 http://127.0.0.1:5000/people 這個資源,得到如下內(nèi)容
{ "_items": [], "_links": { "self": { "title": "people", "href": "people" }, "parent": { "title": "home", "href": "/" } }, "_meta": { "max_results": 25, "total": 0, "page": 1 } }
可以得到一個items列表,links和meta,items是該資源組中所有資源,links中包含self和parent,是指向自己和所在資源組的連接,meta是元信息,這里不討論
默認情況下。這些api都是只讀的,PUT,POST或者DELETE操作都會返回405
如果想要允許讀寫,在setting中寫入
# 啟用對資源組的增刪查 # 如果忽略這一行,默認只提供查 RESOURCE_METHODS = ["GET", "POST", "DELETE"] # 啟用對單個資源的增刪改查 # 忽略情況下只提供查 ITEM_METHODS = ["GET", "PATCH", "PUT", "DELETE"]
這些設(shè)置是全局的,會影響到所有資源和資源組的設(shè)定,可以在各個資源點獨立設(shè)定允許的方法
可選:
MONGO_HOST = "localhost" MONGO_PORT = 27017 MONGO_USERNAME = "完善第一個demo" MONGO_PASSWORD = " " MONGO_DBNAME = "apitest"
我們給第一個demo補上添加的功能
數(shù)據(jù)驗證:
創(chuàng)建一個字典schema,定義people的結(jié)構(gòu)
schema = { "firstname":{ "type":"string", "minlength": 1, "maxlength":10, }, "lastname":{ "type": "string", "minlength": 1, "maxlength": 115, "required": True }, "role":{ "type":"list", "allowed":["author","contributor","copy"], }, "location":{ "type":"dict", "schema":{ "address":{"type":"string"}, "city":{"type":"string"} } }, "born":{ "type":"datetime", }, }
這是基于Cerberus語法的模式定義的,具體語法可以看Cerberus官網(wǎng)
之后我們設(shè)置people屬性
people= { "item_title": "person", # 默認情況下查找資源要同過/people/才能找到 # 這里添加新的只讀路徑,可以通過lastname來獲得資源 "additional_lookup": { "url":"regex("[w]+")", "field":"lastname", }, # 控制緩存 "cache_control":"max-age=10,must-revalidate", "cache_expires": 10, # 覆蓋全局的讀寫方法 "resource_methods":["GET","POST"], # 設(shè)定結(jié)構(gòu) "schema":schema, }
最后更新資源設(shè)置
DOMAIN={"people":people}
用postman做post添加數(shù)據(jù)
[{"firstname": "barack", "lastname": "obama"}, {"firstname": "mitt", "lastname": "romney"}]
然后查看數(shù)據(jù) http://127.0.0.1:5000/people
{ "_items": [ { "_id": "5a30e8527111c41e885ff38a", "firstname": "barack", "_etag": "adab38db64dea06ebfe1c0e783a28bde88565c3f", "_links": { "self": { "href": "people/5a30e8527111c41e885ff38a", "title": "person" } }, "_created": "Wed, 13 Dec 2017 08:44:02 GMT", "lastname": "obama", "_updated": "Wed, 13 Dec 2017 08:44:02 GMT" }, { "_id": "5a30e8527111c41e885ff38b", "firstname": "mitt", "_etag": "39426631ce8050ff7ad6982e02281289cff4919b", "_links": { "self": { "href": "people/5a30e8527111c41e885ff38b", "title": "person" } }, "_created": "Wed, 13 Dec 2017 08:44:02 GMT", "lastname": "romney", "_updated": "Wed, 13 Dec 2017 08:44:02 GMT" } ], "_meta": { "page": 1, "max_results": 25, "total": 2 }, "_links": { "parent": { "href": "/", "title": "home" }, "self": { "href": "people", "title": "people" } }
通過新增加的路徑查看 http://127.0.0.1:5000/people/obama
{ "_created": "Wed, 13 Dec 2017 07:24:04 GMT", "lastname": "obama", "_links": { "parent": { "title": "home", "href": "/" }, "collection": { "title": "people", "href": "people" }, "self": { "title": "person", "href": "people/5a30d5947111c40f80df511e" } }, "_updated": "Wed, 13 Dec 2017 07:24:04 GMT", "_etag": "94237cbea7a9a93d6db2dfb1c78a6ee84c4f8c89", "_id": "5a30d5947111c40f80df511e", "firstname": "barack" }
感覺還行
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41068.html
摘要:之前剛學(xué)時硬生生使用了靜態(tài)資源和接口分離的方法,實際使用中肯定會非常不方便。于是發(fā)現(xiàn)了用于前后端分離,編寫后臺的框架。 之前剛學(xué)django時硬生生使用了靜態(tài)資源和接口分離的方法,實際使用中肯定會非常不方便。于是發(fā)現(xiàn)了用于前后端分離,編寫后臺API的REST framework框架。這里做初步嘗試官方文檔看起來非常入門本次實踐主要是根據(jù)官方文檔步驟進行初步實踐,其中加入一些自己學(xué)習時理...
摘要:異步最佳實踐避免回調(diào)地獄前端掘金本文涵蓋了處理異步操作的一些工具和技術(shù)和異步函數(shù)。 Nodejs 連接各種數(shù)據(jù)庫集合例子 - 后端 - 掘金Cassandra Module: cassandra-driver Installation ... 編寫 Node.js Rest API 的 10 個最佳實踐 - 前端 - 掘金全文共 6953 字,讀完需 8 分鐘,速讀需 2 分鐘。翻譯自...
摘要:更新嘗試了一下實現(xiàn)前后端分離,新的文章如下前后端分離之初試更新可另外用實現(xiàn)前后端分離,這篇文章可能局限性太大,只是個人的入門實踐剛剛學(xué)習前端快一年,后臺方面了解甚少,于是決定踩踩坑,學(xué)習一下。 2018.9.6更新:嘗試了一下REST framework實現(xiàn)前后端分離,新的文章如下Django前后端分離之REST framework初試 2018.8.27更新:可另外用 restful...
摘要:要使用驗證,需要通過一些外部技術(shù)例如,向客戶發(fā)送包含用戶和秘密密鑰的電子郵件向客戶端提供用戶和密鑰??蛻舳藢⑹褂锰峁┑拿荑€來簽署所有請求。 驗證類型 全局驗證 要實現(xiàn)安全認證,只需要在Eve實例化的時候傳入驗證類即可,這樣就創(chuàng)建了一個全局的驗證類 from eve.auth import BasicAuth class MybasicAuth(BasicAuth): ...
閱讀 2039·2023-04-26 00:16
閱讀 3487·2021-11-15 11:38
閱讀 3181·2019-08-30 12:50
閱讀 3191·2019-08-29 13:59
閱讀 762·2019-08-29 13:54
閱讀 2512·2019-08-29 13:42
閱讀 3315·2019-08-26 11:45
閱讀 2196·2019-08-26 11:36