日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

restful-api最佳实践

發布時間:2025/7/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 restful-api最佳实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Best-practices-for-a-pragmatic-restful-api

先閱讀文檔:http://www.oschina.net/translate/best-practices-for-a-pragmatic-restful-api 理解restful api設計理念

我們公司的所有微服務接口都放在 "api.998jk.com/微服務名"?下

微服務內部api設計規范為:業務域/訪問級別, 與best-practices-for-a-pragmatic-restful-api的區別是加入了一級訪問級別,例如:

簡單列表接口 /chatMessage/pb GET方式,提交參數page,pageSize,total

復雜查詢接口 /chatMessage/pb/search POST方式,提交參數為json RequestBody,根據各個接口不同自行定義

查詢單條接口 /chatMessage/pb/123 GET方式,123為id

刪除單條接口 /chatMessage/pt/123 DELETE方式,123為id

更新單條接口 /chatMessage/pt/123 PUT方式,提交參數為json RequestBody,根據各個接口不同自行定義

上述示例 完整路徑為:api.998jk.com/微服務名/chatMessage/xxx

訪問級別:

? ? pb(public) 公開,對外對內沒有任何限制;

? ? pt(protected)?受保護,對外受保護,對內沒有任何限制。需要header中含有authorization 值為"Bearer token令牌"。在api gateway會獲取該token, 并且在header中設置uid 值為該令牌的用戶id。

? ? df(default) 默認,對外加密,對內沒有任何限制。繼承protected限制。并且在api gateway會對返回結果加密,客戶端需要對結果解密后使用。加密后json如下:

{"encrypted":"返回結果加密后的字符串"}

? ? pv(private) 私有的,對外無法訪問,對內沒有任何限制。繼承default限制。

?

暴露的restful服務需采用JAX-RS標準注解,無需springMVC controller 直接暴露service,需要使用swagger注解以便自動產生restful api文檔。示例如下

package?charles.sc.provider.service;import?charles.sc.provider.entity.ChatMessage; import?com.jztey.framework.mvc.Paging; import?com.jztey.framework.mvc.RestfulPagingResult; import?com.jztey.framework.mvc.RestfulResult; import?io.swagger.annotations.Api; import?io.swagger.annotations.ApiOperation; import?io.swagger.annotations.ApiParam; import?org.springframework.cloud.netflix.feign.FeignClient;import?javax.validation.Valid; import?javax.ws.rs.*; import?javax.ws.rs.core.MediaType;/***?Created?by?Charles?on?2016/8/15.*/ @FeignClient(value?=?"provider-service") @Path("/chatMessage") @Produces(MediaType.APPLICATION_JSON) @Api(tags?=?{"聊天消息接口"}) public?interface?ChatMessageService?{@Path("/pb")@GET@ApiOperation(value?=?"聊天記錄列表",?response?=?RestfulPagingResultChatMessage.class)RestfulPagingResult<ChatMessage>?findPage(@QueryParam("id")?int?page,?@QueryParam("pageSize")?int?pageSize,?@QueryParam("total")?int?total);@Path("/pt/{id:\\d+}")@GET@ApiOperation(value?=?"按id查詢聊天記錄",?response?=?RestfulResultChatMessage.class)RestfulResult<ChatMessage>?find(@PathParam("id")?Long?id);@Path("/pb/search")@POST@ApiOperation(value?=?"搜索聊天記錄",?response?=?RestfulPagingResultChatMessage.class)RestfulPagingResult<ChatMessage>?search(Paging<ChatMessage>?paging);@Path("/pt")@POST@ApiOperation(value?=?"添加聊天記錄",?response?=?RestfulResultChatMessage.class)RestfulResult<ChatMessage>?insert(@HeaderParam("uid")?Long?uid,?@ApiParam?@Valid?ChatMessage?chatMessage);@Path("/pt/{id:\\d+}")@DELETE@ApiOperation(value?=?"按id刪除聊天記錄",?response?=?RestfulResultChatMessage.class)RestfulResult<ChatMessage>?delete(@HeaderParam("uid")?Long?uid,?@PathParam("id")?Long?id);@Path("/pt/{id:\\d+}")@PUT@ApiOperation(value?=?"修改聊天記錄",?response?=?RestfulResultChatMessage.class)RestfulResult<ChatMessage>?update(@HeaderParam("uid")?Long?uid,?@PathParam("id")?Long?id,?@ApiParam?@Valid?ChatMessage?chatMessage);class?RestfulResultChatMessage?extends?RestfulResult<ChatMessage>?{}class?RestfulPagingResultChatMessage?extends?RestfulPagingResult<ChatMessage>?{} }

?

package?charles.sc.provider.service;import?charles.sc.provider.entity.ChatMessage; import?com.jztey.framework.mvc.Paging; import?com.jztey.framework.mvc.RestfulPagingResult; import?com.jztey.framework.mvc.RestfulResult; import?org.springframework.stereotype.Service;import?java.util.ArrayList; import?java.util.List;/***?Created?by?Charles?on?2016/8/16.*/ @com.alibaba.dubbo.config.annotation.Service @Service public?class?ChatMessageServiceImpl?extends?BaseService<ChatMessage>?implements?ChatMessageService?{@Overridepublic?RestfulPagingResult<ChatMessage>?findPage(int?page,?int?pageSize,?int?total)?{System.out.println("get");//?統一使用查詢接口Paging<ChatMessage>?paging?=?new?Paging<>(page,?pageSize);paging.setTotal(total);return?this.search(paging);}@Overridepublic?RestfulResult<ChatMessage>?find(Long?id)?{System.out.println("getById");return?new?RestfulResult(new?ChatMessage(id,?"fu",?"tu",?"msg",?"mi",?System.currentTimeMillis(),?System.currentTimeMillis(),?ChatMessage.STATUS_NO_PROCESS));}@Overridepublic?RestfulPagingResult<ChatMessage>?search(Paging<ChatMessage>?paging)?{System.out.println("search");List<ChatMessage>?entityList?=?new?ArrayList<>();entityList.add(new?ChatMessage(1L,?"fu",?"tu",?"msg",?"mi",?System.currentTimeMillis(),?System.currentTimeMillis(),?ChatMessage.STATUS_NO_PROCESS));entityList.add(new?ChatMessage(2L,?"fu2",?"tu2",?"msg2",?"mi2",?System.currentTimeMillis(),?System.currentTimeMillis(),?ChatMessage.STATUS_NO_PROCESS));if?(-1?==?paging.getTotal())?{????//?total沒有傳上來//?查詢totalpaging.setTotal(100);}return?new?RestfulPagingResult(entityList,?paging.getTotal());}@Overridepublic?RestfulResult<ChatMessage>?insert(Long?uid,?ChatMessage?chatMessage)?{System.out.println("insert?uid:"?+?uid);return?new?RestfulResult<>(chatMessage);}@Overridepublic?RestfulResult<ChatMessage>?delete(Long?uid,?Long?id)?{System.out.println("delete?uid:"?+?uid);return?new?RestfulResult(new?ChatMessage(id,?"fu",?"tu",?"msg",?"mi",?System.currentTimeMillis(),?System.currentTimeMillis(),?ChatMessage.STATUS_NO_PROCESS));}@Overridepublic?RestfulResult<ChatMessage>?update(Long?uid,?Long?id,?ChatMessage?chatMessage)?{System.out.println("update?uid:"?+?uid);return?new?RestfulResult<>(chatMessage);} }

完整代碼參考:http://gitlab.998jk.com/heying/spring-cloud





本文轉自yushiwh 51CTO博客,原文鏈接:http://blog.51cto.com/yushiwh/1942254,如需轉載請自行聯系原作者


總結

以上是生活随笔為你收集整理的restful-api最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成年视频 | 久久青青 | 一区二区乱子伦在线播放 | 国产福利不卡视频 | 看av网 | 日本乱码一区二区 | 国产精品伦一区二区 | 午夜国产在线观看 | 天堂在线资源库 | 国产成人a人亚洲精品无码 在线aa | 国产jjizz一区二区三区视频 | 午夜偷拍福利 | 精品视频一区二区在线观看 | 日xxxx| 在线一区| 自拍偷拍国产精品 | 国产乱码精品一品二品 | 亚洲经典久久 | 丰满少妇aaaaaa爰片毛片 | 91精品推荐| 亚洲一区二区中文 | 午夜国产小视频 | 91精品国产乱码久久久张津瑜 | 99热在线观看免费精品 | japanese国产 | 自拍偷拍 亚洲 | 四虎精品在线 | 波多野结衣欲乱上班族 | 国产精品理论在线观看 | 91精产国品一二三 | 三点尽露的大尺度国产 | 日韩丰满少妇 | 午夜精品极品粉嫩国产尤物 | 波多野结衣视频免费看 | 91丝袜一区二区三区 | 丰满少妇在线观看网站 | 性色av一区二区三区 | 极品销魂美女少妇尤物 | 欧美激情在线狂野欧美精品 | 欧美日韩伊人 | 国产精品性 | 久久蜜桃av一区二区天堂 | 午夜痒痒网 | 国产精品99久久免费黑人人妻 | 免费看一级黄色大全 | 免费在线一区二区三区 | 人妻毛片 | 日本裸体视频 | 精品二三区 | 一起草最新网址 | 欧美精品一区二区三区四区五区 | 久久婷婷一区 | av制服丝袜在线 | 国产特黄毛片 | 蜜桃av噜噜一区二区三区小说 | 波多野一区二区三区 | 国产资源视频 | 69热在线观看| 色综合久久中文字幕无码 | 亚洲不卡视频在线 | 国产成人麻豆精品午夜在线 | 黄大色黄大片女爽一次 | 麻豆福利视频 | 亚洲影视在线 | 黄色高清免费 | 国产精品久久久久久久久久久久久 | 久久久男人的天堂 | 公与妇乱理三级xxx www色 | 中文字幕日韩精品在线观看 | 在线观看视频91 | 欧美韩国日本 | 在线不卡日本 | a视频免费观看 | 韩日av一区二区 | 日皮毛片 | 欧美大白屁股 | www.夜夜操 | 一区二区三区免费看 | 日韩成人动漫在线观看 | 久久久久无码精品国产sm果冻 | 都市激情亚洲 | 麻豆影视大全 | 中文字幕人妻一区 | 欧美成人三级伦在线观看 | 98精品视频 | 亚洲精品无人区 | 大奶在线播放 | 中文字幕视频免费观看 | 亚洲图片另类小说 | 天堂视频在线观看免费 | 天天插天天 | 特大黑人巨交性xxxx | 以女性视角写的高h爽文 | 美女黄18以下禁止观看 | 黄色成人免费网站 | 日本性爱视频在线观看 | 尼姑福利影院 | 免费看黄av| 欧美大白屁股 |