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
@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)
像这样改变你的端点
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
| 归档时间: |
|
| 查看次数: |
11840 次 |
| 最近记录: |