具有空值的Spring MVC @Path变量

Nee*_*ngh 2 java spring spring-mvc spring-boot

在此处输入图片说明正在使用 spring boot 开发应用程序。在资源中使用路径变量(**@PathVariable**注释)和请求参数(**@RequestParam("name")**注释)。我的代码获取请求参数值而不是路径变量值,我获取路径变量值为空。请任何人建议我解决这个问题。

@RequestMapping(value = "/api/user/{id}", method = RequestMethod.GET)  
public void get(@RequestParam("name")  String name, @PathVariable Integer id); {

        System.out.println("name="+name);
        System.out.println("id="+id)
}
Run Code Online (Sandbox Code Playgroud)

网址:
http://localhost:8080/api/user/2?name=neeru

输出:
名称=neeru
id=null

我也试过

**@RequestMapping(value = "/api/user/id={id}", method = RequestMethod.GET)** 
Run Code Online (Sandbox Code Playgroud)

URL:
http://localhost:8080/api/user/id=2?name=neeru 但得到相同的 id value=null

我又添加了一种方法 - 只有 @PathVariable

@RequestMapping(path="/api/user/name/{name}", method = RequestMethod.GET)    
   void get( @PathVariable("value=name") String name){

   System.out.println("name="+name)
}
Run Code Online (Sandbox Code Playgroud)

但结果是相同的路径变量值 name=null

Sim*_*lli 5

@PathVariable 用于像 MystyxMac 建议的那样提取路径中的变量。如果要提取查询参数,则必须使用@RequestParam

但是您的示例是路径和查询参数的混合。

您不能在 URL 中使用 =,因为这是一个保留字符:https : //www.w3.org/Addressing/URL/url-spec.txt

所以要么使用

/api/user/{id} with @PathVariable 
Run Code Online (Sandbox Code Playgroud)

或者

/api/user?id={id} with @RequestParam
Run Code Online (Sandbox Code Playgroud)


Rah*_*hta 5

  1. @PathVariable是从uri中获取一些占位符
  2. @RequestParam是获取一个参数

像这样改变你的端点

http://localhost:8080/api/user/2/users?name=neeru

`

@RequestMapping(value = "api/user/{id}/users", method = RequestMethod.GET)  
public void get(@RequestParam("name")  String name, @PathVariable("id") Integer id); {
        System.out.println("name="+name);
        System.out.println("id="+id)
}
Run Code Online (Sandbox Code Playgroud)

`

输出:

名称 = neeru

编号 = 2

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明