📜  spring boot return 201 created - Java (1)

📅  最后修改于: 2023-12-03 14:47:32.782000             🧑  作者: Mango

Spring Boot 返回 201 Created - Java

介绍

在开发过程中,我们经常需要返回一个状态码来表示后端接口的处理结果。其中,状态码 201 Created 的意义是表示请求已成功,并且资源已经被创建。这个状态码通常用于 POST 请求,当我们创建一个新的资源时,服务器会返回 201 Created 状态码和新资源的 URL 地址。本文将介绍如何使用 Spring Boot 返回状态码 201 Created。

实现

在 Spring Boot 中,我们可以使用下面的方式来返回 201 Created 状态码以及新资源的 URL 地址:

@RestController
@RequestMapping("/api")
public class UserController {

    @PostMapping("/users")
    public ResponseEntity<Void> createUser(@RequestBody User user) {
        // 创建用户
        User savedUser = userRepository.save(user);
        
        // 构造创建的资源 URL 地址
        URI location = ServletUriComponentsBuilder.fromCurrentRequest()
                                                   .path("/{id}")
                                                   .buildAndExpand(savedUser.getId())
                                                   .toUri();
        
        // 返回 201 Created 状态码和资源 URL 地址
        return ResponseEntity.created(location).build();
    }
}

在上面的代码中,我们使用 @PostMapping 注解指定了 POST 请求的路径为 /api/users,并且接收一个 User 对象作为参数。在方法体中,我们首先创建用户记录,然后使用 ServletUriComponentsBuilder 构造了创建的资源 URL 地址。最后,我们通过 ResponseEntity.created(location).build() 返回了 201 Created 状态码和资源 URL 地址。

至此,我们就成功地返回了 201 Created 状态码和新资源 URL 地址。如果我们向 /api/users 发送 POST 请求,后端将返回下面的结果:

HTTP/1.1 201 Created
Location: http://localhost:8080/api/users/1

其中,Location 头部包含了新资源的 URL 地址。

总结

本文介绍了如何在 Spring Boot 中返回 201 Created 状态码和资源 URL 地址。我们可以使用 ResponseEntity.created(location).build() 方法构造返回结果,其中 location 参数表示新资源的 URL 地址。在实现中,我们需要引入 ServletUriComponentsBuilder 类来构造 URL 地址。