W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
項(xiàng)目中,經(jīng)常要提供一個(gè) API 供第三方使用,一個(gè)通用的 API 設(shè)計(jì)規(guī)范就是使用 REST API。REST API 是使用 HTTP 中的請求類型來標(biāo)識對資源的操作。如:
GET
/ticket
#獲取ticket列表GET
/ticket/12
#查看某個(gè)具體的ticketPOST
/ticket
#新建一個(gè)ticketPUT
/ticket/12
#更新ticket 12DELETE
/ticket/12
#刪除ticekt 12ThinkJS 中提供了很便捷的方式來創(chuàng)建 REST API,創(chuàng)建后無需額外的代碼即可響應(yīng) REST API 的處理,同時(shí)也可以通過定制響應(yīng)額外的需求。
通過 thinkjs controller [name] --rest
即可創(chuàng)建一個(gè) REST API。如:
thinkjs controller home/ticket --rest
上面的命令表示在 home
模塊下創(chuàng)建了一個(gè) ticket
的 Rest Controller,該 Controller 用來處理資源 ticket
的請求。
Rest Controller 創(chuàng)建完成后,無需寫任何的代碼,即可完成對 REST API 的處理。資源名稱和數(shù)據(jù)表名稱是一一對應(yīng)的,如:資源名為 ticket
,那么對應(yīng)的數(shù)據(jù)表為 數(shù)據(jù)表前綴
+ ticket
。
REST API 默認(rèn)是從 HTTP METHOD 里獲取當(dāng)前的請求類型的,如:當(dāng)前請求類型是 DELETE
,表示對資源進(jìn)行刪除操作。
如果有些客戶端不支持發(fā)送 DELETE
請求類型,那么可以通過屬性 _method
指定一個(gè)參數(shù)用來接收請求類型。如:
export default class extends think.controller.rest {
init(http){
super.init(http);
this._method = "_method"; //指定請求類型從 GET 參數(shù) _method 里獲取
}
}
默認(rèn)情況下,獲取資源信息時(shí),會(huì)將資源的所有字段都返回。有時(shí)候需要隱藏部分字段,可以通過在__before
魔術(shù)方法里完成此類操作。
export default class extends think.controller.rest {
__before(){
this.modelInstance.fieldReverse("password,score"); //隱藏 password 和 score 字段
}
}
有些 REST API 需要進(jìn)行權(quán)限驗(yàn)證,驗(yàn)證完成后才能獲取對應(yīng)的信息,可以通過在 __before
魔術(shù)方法里進(jìn)行驗(yàn)證。
export default class extends think.controller.rest {
* __before(){
let auth = yield this.checkAuth();
if(!auth){
return this.fail("no permissions"); //沒權(quán)限時(shí)直接返回
}
}
}
更多定制方式請參見 API -> controller.rest。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: