您好,登錄后才能下訂單哦!
這篇文章主要講解了“SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑”吧!
首先我們新建一個(gè)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的根目錄
然后我們創(chuàng)建一個(gè)AutoPrefixConfiguration類,用以將AutoPrefixUrlMapping加入Springboot的容器中
@Component public class AutoPrefixConfiguration implements WebMvcRegistrations { @Override public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { return new AutoPrefixUrlMapping(); } }
測(cè)試接口如下:
url會(huì)自動(dòng)帶上 /v1的前綴,測(cè)試通過(guò)!當(dāng)然,如果目錄層級(jí)更復(fù)雜,通過(guò)上述代碼也是可以實(shí)現(xiàn)的。
springboot正常啟動(dòng)項(xiàng)目,訪問(wèn)接口均正常,新增一接口請(qǐng)求界面路徑,訪問(wèn)該接口報(bào)錯(cuò)404
idea springboot
http://localhost:8080/cuer/apSw?ad=2893e6fce42&_=161607509 404
百度說(shuō)是接口所在包放置位置不對(duì),導(dǎo)致接口沒(méi)被掃描到,但是我的情況是系統(tǒng)原本存在的接口都可以訪問(wèn)到,并且新接口所在位置與舊接口所在位置一致。且查看新接口包與 spring boot啟動(dòng)類的位置符合可被掃描到情況,故排除新接口包放置位置不對(duì)的情況
查看后端接口代碼寫(xiě)法沒(méi)錯(cuò)
查看調(diào)用后端接口傳參是否錯(cuò)誤(接口有參數(shù),直接不傳參http://localhost:8080/cuer/apSw,打斷點(diǎn) 訪問(wèn)接口,可以進(jìn)入到接口,說(shuō)明接口沒(méi)錯(cuò))斷點(diǎn)往下打,發(fā)現(xiàn)是return 頁(yè)面報(bào)404 ,比對(duì)后發(fā)現(xiàn),頁(yè)面路徑對(duì)應(yīng)根本沒(méi)頁(yè)面,修改頁(yè)面路徑重新訪問(wèn),成功。
@Slf4j @Controller @RequestMapping(value = {"/customer"}) @AllArgsConstructor public class CerCustomerController { private final PsionsUtil pnsUtil; private final ICCredService crdService; private final ICrEvalService ervice; /** * 跳轉(zhuǎn)到列表界面 * * @return */ @GetMapping("/index") public String customerCredIndex() { return "/business/customer/index"; } /** * 跳轉(zhuǎn)到查看界面 * * @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怎么根據(jù)目錄路徑生成接口的url路徑”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。