您好,登錄后才能下訂單哦!
這篇文章主要講解了“SpringBoot怎么根據目錄路徑生成接口的url路徑”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“SpringBoot怎么根據目錄路徑生成接口的url路徑”吧!
首先我們新建一個AutoPrefixUrlMapping類,繼承自RequestMappingHandlerMapping,用以獲取新的url
public class AutoPrefixUrlMapping extends RequestMappingHandlerMapping { // 從配置文件中讀取根目錄 @Value("${api-package}") private String apiPackagePath; @Override protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) { RequestMappingInfo mappingInfo = super.getMappingForMethod(method, handlerType); if (mappingInfo != null){ String prefix = this.getPrefix(handlerType); RequestMappingInfo newMappingInfo = RequestMappingInfo.paths(prefix).build().combine(mappingInfo); return newMappingInfo; } return mappingInfo; } // 獲取前綴 private String getPrefix(Class<?> handlerType){ String packageName = handlerType.getPackage().getName(); String newPath = packageName.replaceAll(this.apiPackagePath, ""); return newPath.replace(".","/"); } }
api-package = com.lyn.miniprogram.api
用以聲明url的根目錄
然后我們創建一個AutoPrefixConfiguration類,用以將AutoPrefixUrlMapping加入Springboot的容器中
@Component public class AutoPrefixConfiguration implements WebMvcRegistrations { @Override public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { return new AutoPrefixUrlMapping(); } }
測試接口如下:
url會自動帶上 /v1的前綴,測試通過!當然,如果目錄層級更復雜,通過上述代碼也是可以實現的。
springboot正常啟動項目,訪問接口均正常,新增一接口請求界面路徑,訪問該接口報錯404
idea springboot
http://localhost:8080/cuer/apSw?ad=2893e6fce42&_=161607509 404
百度說是接口所在包放置位置不對,導致接口沒被掃描到,但是我的情況是系統原本存在的接口都可以訪問到,并且新接口所在位置與舊接口所在位置一致。且查看新接口包與 spring boot啟動類的位置符合可被掃描到情況,故排除新接口包放置位置不對的情況
查看后端接口代碼寫法沒錯
查看調用后端接口傳參是否錯誤(接口有參數,直接不傳參http://localhost:8080/cuer/apSw,打斷點 訪問接口,可以進入到接口,說明接口沒錯)斷點往下打,發現是return 頁面報404 ,比對后發現,頁面路徑對應根本沒頁面,修改頁面路徑重新訪問,成功。
@Slf4j @Controller @RequestMapping(value = {"/customer"}) @AllArgsConstructor public class CerCustomerController { private final PsionsUtil pnsUtil; private final ICCredService crdService; private final ICrEvalService ervice; /** * 跳轉到列表界面 * * @return */ @GetMapping("/index") public String customerCredIndex() { return "/business/customer/index"; } /** * 跳轉到查看界面 * * @return */ @GetMapping("/apeShw") public String apseShw(String ad, Model model) { model.addAttribute(“apId”, aId); if (“CD”.equals(perUtil.getreTpe())) { return “/bess/cuer/evfo”; } else { CeerVo ceo = creice.gtCByAlyId(ad); model.addAttribute(“cd”, cVo); return “/busis/cr/co”; } } }
感謝各位的閱讀,以上就是“SpringBoot怎么根據目錄路徑生成接口的url路徑”的內容了,經過本文的學習后,相信大家對SpringBoot怎么根據目錄路徑生成接口的url路徑這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。