📜  spring rest中如何在url中传递路径参数-Java(1)

📅  最后修改于: 2023-12-03 15:35:03.552000             🧑  作者: Mango

Spring Rest中如何在url中传递路径参数

在RESTful风格的Web应用程序中,URL中的路径参数(例如ID或名称)通常用于标识资源。 Spring Rest框架中,使用RequestMapping注解可以轻松地定义RESTful风格的API,并从URL中提取路径参数。

1. 定义控制器和RequestMapping注解

要从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注解中指定了基本路由/usersgetUser()updateUser()方法的RequestMapping注解都包含路径参数/{id},Spring框架将从URI解析出该参数。

2. 使用@PathVariable注解

为了检索和使用路径参数,可以将@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类型参数。

3. 使用路径参数

现在,我们已经定义了一个控制器并从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注解。