只是想知道我们应该选择@RequestParam
和@PathVariable
的情况。我知道:
@RequestParam
采用参数值,而@PathVariable
采用占位符值@RequestParam
可以是可选的(required = false),而必须提供@PathVariable
值。 @RequestParam
时,我们必须知道属性语法,但不需要@PathVariable
还有其他理由去特定的吗?
答案 0 :(得分:9)
如果您想遵守“有状态”网址,请使用@PathVariable
。
例如: -
/customer/:id Customer view/edit page
/customer/ Customer Add page
/customer/list List Customer Page
/customer/:cid/order All order of a Customer
/customer/:cid/order/:oid Specific order of a partucular Customer.
明智地使用路径变量将导致URL提供关于结果视图/页面的含义的提示/线索。
这也可以让你支持刷新,返回&没有前进操作 额外的努力。
@RequestParams可用于扩展未作为路径参数传递的数据。您的MVC处理程序可以根据需要组合两个。
答案 1 :(得分:1)
org.springframework.web.bind.annotation.RequestParam
用于绑定查询字符串。 org.springframework.web.bind.annotation.PathVariable
用于绑定网址路径。 org.springframework.web.bind.annotation.RequestBody
用于绑定 HTTP正文。org.springframework.http.RequestEntity
将为您提供一些额外的灵活性,可以在HTTP Body中定义任意HTTP 实体标头。 示例:
/users [GET] # Fetch a list of users
/users [POST] # Create new user
/users/123 [PUT] # Update user
/users/123 [DELETE] # remove user
你可以得到副作用。您不必定义其他URL和其他查询参数来实现基本的CRUD功能。您更改HTTP方法取决于您想要做什么。
fs.trash.interval
在Template URL中放置可选参数最终会变得非常混乱,所以我建议在Query String中添加可选参数。