我在我的Sping Boot REST API控制器中使用了以下方法,在这里,我通常返回ResponseEntity.ok()
,因为我还想将返回的数据传递给客户机。
但是我希望根据操作返回正确的状态,比如创建记录后,应该使用ResponseEntity.created()
等等,我试过使用,但是它只是以URI location
为参数,以下几点我不确定:
**1)**如何在Sping Boot 应用中使用ResponseEntity
正确返回创建、编辑和删除请求?
**2)**我不确定如何使用ResponseEntity.created()
将创建的记录的id或创建的记录的一些数据返回给客户端。
@PostMapping("/categories")
public ResponseEntity<ApiResponse<CommandResponse>> create(
@Valid @RequestBody CategoryRequest request) {
CommandResponse response = categoryService.create(request);
return ResponseEntity.ok(
new ApiResponse<>(Instant.now(clock).toEpochMilli(), SUCCESS, response));
}
我还使用了一个定制的ApiResponse
类来 Package 包含必要信息的响应。
注意:我还使用@RestControllerAdvice
实现了一个全局异常处理器。除了GET之外,我只想使用和返回正确的POST、PUT和DELETE请求类型。
3条答案
按热度按时间mwyxok5s1#
ResponseEntity.created()
返回一个builder对象,允许您根据需要修改响应(看下面的例子)默认情况下,这个URI参数应该指向API方法,它允许你读取那个方法(包括id)。这些方法将设置自动创建的响应代码(201),ok(200),但是如果您确实需要修改它,您可以使用@ResponseStatus(HttpStatus.XXX)注解该方法。即
如果删除,则只返回
ResponseEntity.ok()
,cczfrluj2#
您可以使用静态方法status来个性化您的http状态。例如:
具有主体:
作为HTTP代码的经验法则,我使用标准的REST操作(POST,PUT,GET,DELETE)
x33g5p2x3#
每个API端点应该在成功响应中返回一个HttpStatus。通常,它将是2xx状态代码。对于您的情况,您可以返回HttpStatus.ok,如下所示
在失败响应的情况下,您已经有了@RestControllerAdvice,每个异常都将被处理并返回相应的HttpStatus代码,最好有一个通用的异常处理程序,以避免像这样中断请求上下文线程