溫馨提示×

溫馨提示×

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

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

如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

發(fā)布時(shí)間:2022-03-03 14:13:13 來源:億速云 閱讀:775 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    @PathVariable使用時(shí)遇到的問題

    第一個(gè)問題

    接口:

    /**
         * 查詢客戶詳細(xì)信息
         * BY Oliver_Deng
         * @param userId 用戶id
         * @return
         */
        @ApiOperation(value="查詢客戶詳細(xì)信息",notes = "根據(jù)傳入id查詢客戶詳細(xì)信息")
        @ApiResponses({@ApiResponse(code=400,message="請求參數(shù)沒填好")})
        @ApiImplicitParam(paramType = "query", name = "userId", dataType = "Integer", required = true, value = "客戶id")
        @GetMapping("/findCustomerDetailByUserId/{userId}")
        public Result<Map<String,Object>> findCustomerByUserId(@PathVariable Integer userId){
            //客戶信息
    //        CustomerListVo customerMessage = customerUserService.findCustomerByUserID(userId);
            //客戶車輛信息
    //        List<CustomerUserCar> cars = customerUserCarService.findCarByUserId(Integer.valueOf(userId)); //not finish yet
            //TODO 計(jì)次卡、儲(chǔ)值卡
            return null;
        }

    Swagger訪問:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    解決辦法

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    將paramType 設(shè)置為path即可。

    paramType:表示參數(shù)放在哪個(gè)地方

    • header-->請求參數(shù)的獲取:@RequestHeader(代碼中接收注解)

    • query-->請求參數(shù)的獲?。篅RequestParam(代碼中接收注解)

    • path(用于restful接口)-->請求參數(shù)的獲取:@PathVariable(代碼中接收注解)

    • body-->請求參數(shù)的獲?。篅RequestBody(代碼中接收注解)

    • form(不常用)

    第二個(gè)問題

    接口:

    /**
     * 查詢車輛品牌、車系、年款、車型信息
     * BY Oliver_Deng
     * @param brandId 車輛品牌ID
     * @param familyId 車系ID
     * @param groupId 車輛年款I(lǐng)D
     * @return
     */
    @ApiOperation(value="查詢車輛品牌、車系、年款、車型信息",notes = "查詢車輛品牌、車系、年款、車型信息,傳入子id時(shí)先將上級id清空,一次訪問只能傳入一種id或者不傳id")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "brandId", dataType = "String", required = false, value = "車輛品牌ID"),
            @ApiImplicitParam(paramType = "query", name = "familyId", dataType = "String", required = false, value = "車系ID"),
            @ApiImplicitParam(paramType = "query", name = "groupId", dataType = "String", required = false, value = "車輛年款I(lǐng)D")
    })
    @ApiResponses({@ApiResponse(code=400,message="請求參數(shù)沒填好")})
    @GetMapping("/findCarBrandMessage/{brandId}/{familyId}/{groupId}")
    public Result findCarBrandMessage(@PathVariable String brandId,@PathVariable String familyId,@PathVariable String groupId){
        return customerUserCarService.findCarBrandMessage(brandId,familyId,groupId);
    }

    Swageer訪問:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    查詢成功,但是沒有數(shù)據(jù),我們來DeBug看一下:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    可以看到值竟然時(shí)這些,并不是為null,所以自然滿足了if條件,但功能并不是要如此。

    解決辦法

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    把@ApiImplicitParam參數(shù)去掉,用@RequestParam()。

    為什么能用@RequestParam()?

    RequestParam就是在url后面拼接的參數(shù)。

    成功:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    @PathVariable 404問題

    跳轉(zhuǎn)頁面:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    controller層:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    之后console不報(bào)錯(cuò),但是

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    改變方法:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    改正之后:

    如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題

    以上是“如何解決SpringBoot中@PathVariable使用時(shí)遇到的問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

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

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI