![](/img/trans.png)
[英]In a Spring 3.0 GET request, what's the difference between a @PathVariable and a @RequestParam
[英]Difference between @PathVariable, @RequestParam, and @RequestBody
我了解@PathVariable
、 @RequestParam
和@RequestBody
在 Spring 中的作用,但不清楚我们必须在哪些场景中使用它们,因为它们用于从 URI 中提取值。 为什么我们必须发送像 localhost:8080/getBooks/time 和 localhost:8080/getBooks?book=time 这样的数据。
示例 1:
@RequestParam
主要用于过滤目的假设您想获得 George Martin 的书:
GET localhost:8080/books?author=georgemartin
这里我们传递author=georgemartin
作为请求参数。 这应该会得到马丁的所有书籍,例如权力的游戏系列。 这将主要用于 GET 操作。
示例 2:
@PathVariable
主要用于获取单个对象或数据片段假设您想通过其 id 获取一本书:
GET localhost:8080/books/1
这里我们传递 1 作为路径变量。 这应该会得到 id 为 1 的 1 本书,例如权力的游戏书的第一部分。 这将主要用于 DELETE/GET 操作。
示例 3:
@RequestBody
主要用于保存对象(或数据)假设您要添加一本书:
POST localhost:8080/books/
请求正文具有以下属性:
{
"author":"George Martin",
"Book":"Game of thrones"
...
...
}
这将向数据库添加一本书。 这将主要用于 PUT/POST 操作。
@PathVariable
用于部分路径(即/person/{id})
@RequestParam
用于 GET 查询参数(即 /person?name="Bob")。
@RequestBody
用于请求的实际正文。
@RequestBody 与 POST 动词一起使用,而 @RequestParam 和 @pathVariable 与 GET 动词一起使用
@RequstParam:它从用于过滤、排序和分页的查询字符串中提取值在请求参数中,值可以加密 localhost:8080/getBooks?start=1&end=100
@pathVariable:它从URI路径中提取值在路径变量中,值不能被编码它用于根据值获取数据
参考: https://www.baeldung.com/spring-requestparam-vs-pathvariable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.