SpringBoot @PathVariable使用时遇到的问题及解决

目录
  • @PathVariable使用时遇到的问题
    • 第一个问题
    • 解决办法
    • 第二个问题
    • 解决办法
  • @PathVariable 404问题

@PathVariable使用时遇到的问题

第一个问题

接口:

/**
     * 查询客户详细信息
     * BY Oliver_Deng
     * @param userId 用户id
     * @return
     */
    @ApiOperation(value="查询客户详细信息",notes = "根据传入id查询客户详细信息")
    @ApiResponses({@ApiResponse(code=400,message="请求参数没填好")})
    @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 计次卡、储值卡
        return null;
    }

Swagger访问:

解决办法

将paramType 设置为path即可。

paramType:表示参数放在哪个地方

  • header-->请求参数的获取:@RequestHeader(代码中接收注解)
  • query-->请求参数的获取:@RequestParam(代码中接收注解)
  • path(用于restful接口)-->请求参数的获取:@PathVariable(代码中接收注解)
  • body-->请求参数的获取:@RequestBody(代码中接收注解)
  • form(不常用)

第二个问题

接口:

/**
 * 查询车辆品牌、车系、年款、车型信息
 * BY Oliver_Deng
 * @param brandId 车辆品牌ID
 * @param familyId 车系ID
 * @param groupId 车辆年款ID
 * @return
 */
@ApiOperation(value="查询车辆品牌、车系、年款、车型信息",notes = "查询车辆品牌、车系、年款、车型信息,传入子id时先将上级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 = "车辆年款ID")
})
@ApiResponses({@ApiResponse(code=400,message="请求参数没填好")})
@GetMapping("/findCarBrandMessage/{brandId}/{familyId}/{groupId}")
public Result findCarBrandMessage(@PathVariable String brandId,@PathVariable String familyId,@PathVariable String groupId){
    return customerUserCarService.findCarBrandMessage(brandId,familyId,groupId);
}

Swageer访问:

查询成功,但是没有数据,我们来DeBug看一下:

可以看到值竟然时这些,并不是为null,所以自然满足了if条件,但功能并不是要如此。

解决办法

把@ApiImplicitParam参数去掉,用@RequestParam()。

为什么能用@RequestParam()?

RequestParam就是在url后面拼接的参数。

成功:

@PathVariable 404问题

跳转页面:

controller层:

之后console不报错,但是

改变方法:

改正之后:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • spring boot @PathVariable传递带反斜杠参数 / 的处理

    我就废话不多说了,大家还是看完整的代码吧~ @RequestMapping(value = "/modules/{moduleBaseName}/**", method = RequestMethod.GET) @ResponseBody public String moduleStrings(@PathVariable String moduleBaseName, HttpServletRequest request) { final String path = request.ge

  • SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式

    目录 SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理 例如: 为了方便统一验证,基于切面来实现数据的验证 全局异常处理 异常原因: java.lang.reflect.UndeclaredThrowableException的解决 问题 原因 解决 教训 SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理 微信小程序的接口验证防止非法请求,登录的时候获取openId生成一个七天有效期token存入redis中. 后续每次请求都需要把to

  • 使用@pathvariable与@requestparam碰到的一些问题及解决

    目录 @pathvariable与@requestparam碰到的一些问题 一.@pathvariable 二.@requestparam @PathVariable和@RequestParam的使用说明 value的uri值为以下三类 拓展 @pathvariable与@requestparam碰到的一些问题 一.@pathvariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {x} 占位符可以通过@PathVariable("x") 绑定到操作方

  • SpringBoot @PathVariable使用时遇到的问题及解决

    目录 @PathVariable使用时遇到的问题 第一个问题 解决办法 第二个问题 解决办法 @PathVariable 404问题 @PathVariable使用时遇到的问题 第一个问题 接口: /** * 查询客户详细信息 * BY Oliver_Deng * @param userId 用户id * @return */ @ApiOperation(value="查询客户详细信息",notes = "根据传入id查询客户详细信息") @ApiResponses

  • Vue3+ts+setup getCurrentInstance使用时遇到的问题以及解决办法

    目录 环境 问题描述 问题解决 补充:Vue3 getCurrentInstance与ts结合使用的坑 一.关于在ts中使用到类型定义错误问题 二.不能使用getCurrentInstance的ctx 总结 环境 vscodetypescript4vue3 问题描述 首先,vue3中的全局变量及方法的配置较vue2中的变化大家应该已经知道了,不清楚的可以查看官方说明,但是按照官方文档结合typescript使用时遇到了问题: axios.ts // axios.ts import axios f

  • Go语言WaitGroup使用时需要注意的坑

    前言 WaitGroup在go语言中,用于线程同步,单从字面意思理解,wait等待的意思,group组.团队的意思,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行.Golang 中的 WaitGroup 一直是同步 goroutine 的推荐实践.自己用了两年多也没遇到过什么问题. 直到最近的一天同事扔过来一段奇怪的代码: 第一个坑 复制代码 代码如下: package main   import (     "log"       "sync&qu

  • JS封装的三级联动菜单(使用时只需要一行js代码)

    前言 在实际的项目开发中,我们经常需要三级联动,比如省市区的选择,商品的三级分类的选择等等. 而网上却找不到一个代码完整.功能强大.使用简单的三级联动菜单,大都只是简单的讲了一下实现思路. 下面就给大家分享我在工作中封装并在项目中使用的三级级联操作代码,如有错误或者不当的地方欢迎大家指正. 使用简单(只需要一行代码) 可以根据需要设置是否显示"请选择"项 支持回调(在三级分类加载完成后触发回调事件) 支持一个页面多个级联菜单 演示效果预览: 三级联动封装 原理:将selec标签以及相关

  • pyqt5中QThread在使用时出现重复emit的实例

    在PyQt5中使用QThread的时候,要注意把所有QThread的对象在主类中的init(或者放在所有类函数的外面)中进行实例化,不然可能在多个QThread互相调用的时候,emit重复的信号.一般比较正确的写法如下所示,基本照着这种框架搭建都是没问题的. # -*- coding: utf-8 -*- import sys import time from PyQt5.QtWidgets import * from PyQt5.QtCore import * class MainUi(QWi

  • Git初次使用时的安装配置图文教程

    1.本地电脑没有关联过Git,打开git bush输入$ ssh-keygen -t rsa -C "724277441@qq.com(自己GitHub的邮箱)",创建SSH Key. 2.在我的电脑C盘里面找到.ssh文件夹.打开公钥id_rsa.pub文件,复制里面的内容. 3.进入GItHub - setting - SSH 4.关联仓库 git remote add origin (仓库地址) 5.按照正常步骤 由于远程库是空的,我们第一次推送master分支时,加上了 -u

  • 解决Tensorflow 使用时cpu编译不支持警告的问题

    使用TensorFlow模块时,弹出错误Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2 原因是下载TensorFlow的版本不支持cpu的AVX2编译. 可能是因为安装时使用的pip install tensorflow ,这样默认会下载X86_64的SIMD版本. 有两种解决办法: 1.忽略这个警告,不看它! import os os.environ["TF

  • 关于Python turtle库使用时坐标的确定方法

    想画一个比较复杂的图像,而且还想用turtle画,最让人想退却的是无规律的笔势和繁多的坐标,但既然没有按奈住冲动的心,那我告诉你一个比较笨的方法吧. 我用到了一个工具Photoshop,就是PS(某逗比公司的产品) PS有标尺工具,可以建立参考线,可以测量线段的长度和角度,更重要的是,PS的图像测量也是以像素为单位. 不过PS的坐标原点是在左上角,而在turtle里坐标是中心.有两种办法,一种是不改变坐标原点,在原点出建立直角坐标系,另 一种方法是改变坐标原点位置 home() #以当前海龟位置

  • Spring中异步注解@Async的使用、原理及使用时可能导致的问题及解决方法

    前言 其实最近都在研究事务相关的内容,之所以写这么一篇文章是因为前面写了一篇关于循环依赖的文章: <Spring循环依赖的解决办法,你真的懂了吗> 然后,很多同学碰到了下面这个问题,添加了Spring提供的一个异步注解@Async循环依赖无法被解决了,下面是一些读者的留言跟群里同学碰到的问题: 本着讲一个知识点就要讲明白.讲透彻的原则,我决定单独写一篇这样的文章对@Async这个注解做一下详细的介绍,这个注解带来的问题远远不止循环依赖这么简单,如果对它不够熟悉的话建议慎用. 文章要点 @Asy

  • 关于Spring AOP使用时的一些问题汇总

    在使用AOP的时候遇到了一些问题,特此记录一下 首先写一个常用的AOP切片 切片类AopLog package com.mantis.aop.aspect; import com.fasterxml.jackson.databind.ObjectMapper; import com.mantis.aop.common.util.DataUtil; import eu.bitwalker.useragentutils.UserAgent; import org.aspectj.lang.JoinP

随机推荐