溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑

發(fā)布時(shí)間:2021-11-19 12:59:46 來(lái)源:億速云 閱讀:290 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑”吧!

根據(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(".","/");
    }
}

配置文件application.proprties如下

api-package = com.lyn.miniprogram.api

用以聲明url的根目錄

SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑

然后我們創(chuàng)建一個(gè)AutoPrefixConfiguration類,用以將AutoPrefixUrlMapping加入Springboot的容器中

@Component
public class AutoPrefixConfiguration implements WebMvcRegistrations {
    @Override
    public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
        return new AutoPrefixUrlMapping();
    }
}

測(cè)試接口如下:

SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑

url會(huì)自動(dòng)帶上 /v1的前綴,測(cè)試通過(guò)!當(dāng)然,如果目錄層級(jí)更復(fù)雜,通過(guò)上述代碼也是可以實(shí)現(xiàn)的。

SpringBoot怎么根據(jù)目錄路徑生成接口的url路徑

springboot接口請(qǐng)求界面路徑返404

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

接口沒(méi)被掃描到

百度說(shuō)是接口所在包放置位置不對(duì),導(dǎo)致接口沒(méi)被掃描到,但是我的情況是系統(tǒng)原本存在的接口都可以訪問(wèn)到,并且新接口所在位置與舊接口所在位置一致。且查看新接口包與 spring boot啟動(dòng)類的位置符合可被掃描到情況,故排除新接口包放置位置不對(duì)的情況

配置或代碼寫(xiě)法問(wèn)題

查看后端接口代碼寫(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)注!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI