📅  最后修改于: 2023-12-03 15:35:03.552000             🧑  作者: Mango
在RESTful风格的Web应用程序中,URL中的路径参数(例如ID或名称)通常用于标识资源。 Spring Rest框架中,使用RequestMapping注解可以轻松地定义RESTful风格的API,并从URL中提取路径参数。
要从URL中提取路径参数,需要先定义一个控制器类,并使用RequestMapping注解告诉Spring框架哪个请求应该被映射到哪个方法。
@RestController
@RequestMapping("/users")
public class UserController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public User getUser(@PathVariable("id") Long id) {
// 根据id查询用户
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public void updateUser(@PathVariable("id") Long id, @RequestBody User user) {
// 根据id更新用户
}
}
在这个例子中,我们定义了一个名为UserController的Restful控制器,在RequestMapping注解中指定了基本路由/users
。getUser()
和updateUser()
方法的RequestMapping注解都包含路径参数/{id}
,Spring框架将从URI解析出该参数。
为了检索和使用路径参数,可以将@PathVariable注解应用于方法参数。在getUser()
和updateUser()
方法中,我们使用这个注解来捕获传递给控制器的id参数。
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public User getUser(@PathVariable("id") Long id) {
// 根据id查询用户
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public void updateUser(@PathVariable("id") Long id, @RequestBody User user) {
// 根据id更新用户
}
向@PathVariable
注解传递名称参数是可选的,但是如果不这样做,Spring框架将默认使用方法参数的名称。在这个例子中,我们将路径参数映射到名为id的Long类型参数。
现在,我们已经定义了一个控制器并从URL中提取了路径参数,我们可以使用它在我们的应用程序中执行某些操作。
例如,如果我们使用基本URL/users
和路径参数/123
发起HTTP GET请求,Spring Rest框架将调用getUser()
方法并检索id值为123的用户:
GET /users/123
Response Body:
{
"id": 123,
"name": "Alice",
"email": "alice@example.com"
}
如果我们使用基本URL/users
和路径参数/123
发起HTTP PUT请求,Spring Rest框架将在请求体中找到适当的用户模型并将其传递给updateUser()
方法以更新具有ID 123的现有用户:
PUT /users/123
Request Body:
{
"name": "Alice Smith",
"email": "alice.smith@example.com"
}
Response:
HTTP 204 No Content
路径参数是RESTful API的基本组成部分。使用Spring Rest框架,从URL中提取路径参数很容易,只需要定义一个控制器和使用@PathVariable
注解。