在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ rest API在做修改操作時(shí),如何返回修改后的結(jié)果

rest API在做修改操作時(shí),如何返回修改后的結(jié)果

設(shè)計(jì)rest接口,對(duì)于修改(update,add,delete)操作,網(wǎng)上有說(shuō)應(yīng)該將修改后的結(jié)果返回調(diào)用方,調(diào)用方就可以直接利用這個(gè)修改后的結(jié)果。那么這個(gè)返回結(jié)果是將修改后的整個(gè)實(shí)體(比如User)返回,還是返回一個(gè)主鍵id。

問(wèn)題1:
①如果返回一個(gè)主鍵id。
由于update和delete的id本來(lái)就是從調(diào)用端傳過(guò)來(lái),因此不需要返回。而add時(shí)id是后臺(tái)生成的,所以需要返回給調(diào)用者。這樣的話,即使封裝了統(tǒng)一返回對(duì)象,感覺(jué)API的返回json還是不太統(tǒng)一。

②如果返回實(shí)體
豈不是一個(gè)修改操作的api就要操作數(shù)據(jù)庫(kù)兩次(一次修改,一次查詢)

請(qǐng)問(wèn)各位大大都是如何設(shè)計(jì)rest API的呢?有沒(méi)有代碼分享一下?謝謝了!

回答
編輯回答
舊言

你好,Restful API是一種設(shè)計(jì)風(fēng)格,并不是強(qiáng)制的標(biāo)準(zhǔn)
我們可以對(duì)比一下傳統(tǒng)與其的寫法
傳統(tǒng)寫法:
查詢 /user/query?name=tom GET
詳情 /user/getInfo?id=1 GET
創(chuàng)建 /user/create?name=tom GET
修改 /user/update?id=1&name=jerry POST
刪除 /user/delete?id=1 GET
RESTful寫法
查詢 /user?name=tom GET
詳情 /user/1 GET
創(chuàng)建 /user POST
修改 /user/1 PUT
刪除 /user/1 DELETE
關(guān)于Restful API的幾點(diǎn)說(shuō)法
1、用URL描述資源
2、使用HTTP方法描述行為,使用HTTP狀態(tài)碼來(lái)表示不同的結(jié)果
3、使用json交互數(shù)據(jù)
4、RESTful只是一種風(fēng)格,并不是強(qiáng)制的標(biāo)準(zhǔn)
官方也有一個(gè)模型:
Level 0 :使用Http作為傳輸方式
Level 1 :引入資源概念,每個(gè)資源都有對(duì)應(yīng)的URL
Level 2 :使用HTTP方法進(jìn)行不同的操作,使用HTTP狀態(tài)碼來(lái)表示不同的結(jié)果
Level 3 :使用超媒體,在資源的表達(dá)中包含了鏈接信息
類似SpringMVC中開發(fā)Restful API,一個(gè)查詢請(qǐng)求:

——編寫針對(duì)RestfulAPI的測(cè)試用例
——使用注解聲明RestfulAPI
——在Restful API中傳遞參數(shù)

常用注解
——@RestController 標(biāo)明此Controller提供RestAPI
——@RequestMapping及其變體,映射http請(qǐng)求url到j(luò)ava方法
——@RequestParam映射請(qǐng)求參數(shù)到j(luò)ava方法的參數(shù)
——@PageableDefault指定分頁(yè)參數(shù)默認(rèn)值
而對(duì)于具體返回什么,或者獲取什么,更多的時(shí)候要根據(jù)業(yè)務(wù)的重點(diǎn)來(lái)設(shè)計(jì)。

2018年4月15日 08:14
編輯回答
玄鳥

先發(fā)送post請(qǐng)求新增記錄后返回?cái)?shù)據(jù)主鍵ID到前端,前端接到id后繼續(xù)發(fā)送一個(gè)get請(qǐng)求獲取該ID的數(shù)據(jù)信息返回到前端刷新展示。

2018年7月29日 21:29
編輯回答
不歸路

在執(zhí)行crud之前你肯定要在數(shù)據(jù)庫(kù)里面執(zhí)行一次查詢返回,確定該實(shí)體是否已經(jīng)存在,這是一次查詢,如果不存在直接返回錯(cuò)誤信息,如果GET返回該實(shí)體,如果是put,首先驗(yàn)證你傳過(guò)來(lái)的data是不是符合格式的,如果驗(yàn)證通過(guò)你就用你驗(yàn)證后的數(shù)據(jù)來(lái)更新改實(shí)體,然后對(duì)改實(shí)體進(jìn)行save操作,成功存進(jìn)數(shù)據(jù)庫(kù),返回改更新后的實(shí)體,不需要再次查詢,所以去掉第一次的驗(yàn)證操作需要查詢數(shù)據(jù)庫(kù) 后面只需要操作一次數(shù)據(jù)庫(kù)

2018年8月2日 08:00
編輯回答
愿如初
操作 請(qǐng)求方法/URI 響應(yīng)狀態(tài)碼 響應(yīng)數(shù)據(jù)
創(chuàng)建 POST /users 201 用戶實(shí)體
更新 PUT /users/1 200 用戶實(shí)體
刪除 DELETE /users/1 204 無(wú)
查詢 GET /users 200 用戶列表
查詢 GET /users/1 200 用戶實(shí)體
  1. 創(chuàng)建的時(shí)候需要插入一次數(shù)據(jù)庫(kù),返回
  2. 編輯的話是先查詢,查不到就404,然后插入返回
  3. 刪除的話可以直接刪,刪除時(shí)影響行數(shù)小于1就是404,返回空
  4. 查詢的話沒(méi)啥好說(shuō)的
2018年3月1日 00:38