Spring MVC DispatcherServlet改造為 CSE RestServlet 常見問題匯編

      網友投稿 705 2025-04-11

      Spring Boot的REST應用改造為CSE的REST應用的核心部分就是使用CSE RestServlet替換Spring MVC DispatcherServlet。有很多文章介紹了相關工作量評估、替換原理、改造步驟等。比如:

      [改造原理和步驟]?在Spring Boot中使用CSE

      [改造工作量評估]?微服務改造設計參考

      [改造步驟和實踐]?基于Spring Boot 2.0的IoT應用集成和使用CSE實踐

      本文主要是常見問題匯總。

      --------------------------------------

      問題摘要:使用RequestMapping定義多個Path

      問題描述:

      @RequestMapping(value?=?{"/v3-ext/agencies",?"/v3-huawei/agencies",?"/v3.0/OS-AGENCY/agencies"}, ????????????????????method?=?RequestMethod.GET,?produces?=?"application/json;charset=UTF-8") public?Map?listAgency(@RequestParam("domain_id")?String?domainId)

      以上接口定義了多個Path。在CSE中,一個接口只能允許一個Path,并且必須存在唯一的operation id。默認情況下operation id就是方法名。

      錯誤日志:

      解決建議:

      可以將一個接口拆分為多個接口。

      @RequestMapping(value?=?{"/v3-ext/agencies"}, ????????????????????method?=?RequestMethod.GET,?produces?=?"application/json;charset=UTF-8") public?Map?listAgency1(@RequestParam("domain_id")?String?domainId) @RequestMapping(value?=?{"/v3.0/OS-AGENCY/agencies"}, ????????????????????method?=?RequestMethod.GET,?produces?=?"application/json;charset=UTF-8") public?Map?listAgency2(@RequestParam("domain_id")?String?domainId)

      --------------------------------------

      Spring MVC DispatcherServlet改造為 CSE RestServlet 常見問題匯編

      問題摘要:不支持在接口參數里面使用HttpServletResponse

      問題描述:

      @RequestMapping(value?=?"/v3/groups/{group_id}/users/{user_id}",?method?=?RequestMethod.HEAD,?produces?=?"application/json;charset=UTF-8") public?void?isUserOfGroup(@PathVariable("group_id")?String?groupId, ??????????????????????????@PathVariable("user_id")?String?userId,?HttpServletResponse?response)

      以上接口使用了HttpServletResponse作為接口參數。CSE的通信層與編碼層是完全解耦的,業務代碼不能直接操作通信層的響應。另外,CSE要求所有接口都需要有明確的定義(即契約,swagger),開發的時候,接口定義即文檔。

      錯誤日志:

      解決建議:

      這種情況需要試業務邏輯進行分析,將操作response的內容抽取為響應值。比如:

      response.setStatus(resultCode)

      這種代碼只是想設置響應的錯誤碼,可以替換為下面的方式:

      @RequestMapping(value?=?"/v3/groups/{group_id}/users/{user_id}",?method?=?RequestMethod.HEAD,?produces?=?"application/json;charset=UTF-8") @ApiResponses({ ????????@ApiResponse(code?=?200,?response?=?String.class,?message?=?""),@ApiResponse(code?=?204,?response?=?String.class,?message?=?"") }) public?Response?isUserOfGroup(@PathVariable("group_id")?String?groupId, ??????????????????????????@PathVariable("user_id")?String?userId)?throws?BadRequestException?{ ???if(groupService.isUserOfGroup(groupId,?userId))?{ ????????????return?Response.create(javax.ws.rs.core.Response.Status.OK,?""); ????????}?else?{ ????????????return?Response.create(javax.ws.rs.core.Response.Status.NO_CONTENT,?""); ????????} }

      --------------------------------------

      問題摘要:參數數據類型里面包含抽象數據結構

      問題描述:

      @RequestMapping(value?=?"/v3/regions/{region_id}",?method?=?RequestMethod.GET,?produces="application/json;charset=UTF-8") public?Map?getRegion(@PathVariable("region_id")?String?regionId)

      其中Region類包含字段locales是Map,沒有具體類型。

      public?class?Region?{ ????private?String?id; ????private?String?description; ????private?String?parent_region_id; ????private?String?type; ????private?Map?locales; ????private?Links?links;

      錯誤日志:

      解決建議:

      這種情況是具體情況修改為具體類型即可,比如Map,或者修改為Object。

      Spring CSE

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在表格匯總插入表頭(如何在表格中添加表頭)
      下一篇:為什么我做上角的文件按鈕打不開?
      相關文章
      亚洲图片中文字幕| 亚洲人成人网站色www| 亚洲av日韩av高潮潮喷无码| 亚洲午夜精品久久久久久浪潮| 久久精品国产亚洲AV| 亚洲日本一线产区和二线产区对比| 亚洲乱码一二三四区国产| 亚洲黄色网站视频| 久久精品国产亚洲av高清漫画 | 亚洲天天做日日做天天看| 久久精品亚洲中文字幕无码网站| 亚洲精品成人网站在线观看| 亚洲精品美女久久777777| 亚洲国产精品成人精品无码区在线 | 亚洲经典在线观看| 亚洲精品视频在线免费| 亚洲国产精品久久网午夜| 亚洲国产夜色在线观看| 国产精品亚洲专区在线观看| 波多野结衣亚洲一级| 中文字幕无码精品亚洲资源网久久| 亚洲一日韩欧美中文字幕在线 | 国产精品亚洲成在人线| 久久精品7亚洲午夜a| 久久久亚洲欧洲日产国码二区| 亚洲精彩视频在线观看| 亚洲六月丁香六月婷婷蜜芽| 91丁香亚洲综合社区| 亚洲成在人线在线播放无码| 免费亚洲视频在线观看| 浮力影院亚洲国产第一页| 亚洲国产一成人久久精品| 亚洲日本va午夜中文字幕一区| 亚洲色图视频在线观看| 激情五月亚洲色图| 亚洲av无码一区二区三区在线播放| 亚洲M码 欧洲S码SSS222| 国产成人亚洲精品狼色在线| 久久久久亚洲精品无码系列| 亚洲欧洲精品视频在线观看| 亚洲综合精品伊人久久|