如何在 ResponseEntity 中返回已创建状态 (201 HTTP)

Posted

技术标签:

【中文标题】如何在 ResponseEntity 中返回已创建状态 (201 HTTP)【英文标题】:How to return CREATED status (201 HTTP) in ResponseEntity 【发布时间】:2020-10-01 01:24:11 【问题描述】:

有一个Spring-MVC 应用程序。在控制器中,当返回方法的结果时,我通过ResponseEntity<> 返回。成功后,我返回(200 statutes)OK-方法。但是在创建某些东西时,我想返回CREATED-method(201 状态)。我只是不明白通过CREATED 打电话时要在括号中问什么样的URL。如何实现?

现在我有这样一个实现:

@PostMapping("/create/dish")
    ResponseEntity<Dish> createDish(@Valid @RequestBody DishDTO dishDTO) 

        return ResponseEntity.ok(cookService.createDish(dishDTO.getDishName(), dishDTO.getAboutDish(), dishDTO.getDishType(),
                dishDTO.getCookingTime(), dishDTO.getWeight(),
                dishDTO.getDishCost(), dishDTO.getCooksId()));
    

我想像这样重新制作它以使其工作(现在它不起作用):

@PostMapping("/create/dish")
    ResponseEntity<Dish> createDish(@Valid @RequestBody DishDTO dishDTO) 

        return ResponseEntity.created(cookService.createDish(dishDTO.getDishName(), dishDTO.getAboutDish(), dishDTO.getDishType(),
                dishDTO.getCookingTime(), dishDTO.getWeight(),
                dishDTO.getDishCost(), dishDTO.getCooksId()));
    

附:我根本没有前端。全部通过 Swagger 或 PostMan。

【问题讨论】:

“已创建”状态是 201,而不是 203。 我要改变我的问题。谢谢! 这能回答你的问题吗? add location header to Spring MVC's POST response? 【参考方案1】:

如果您想创建没有正文的 201 (CREATED) 响应,请使用:

ResponseEntity.status(HttpStatus.CREATED).build()

【讨论】:

【参考方案2】:

你可以使用

return new ResponseEntity(cookService.createDish(...), HttpStatus.CREATED);

阅读更多here

【讨论】:

【参考方案3】:

就这样返回:

return new ResponseEntity<Dish>(cookService.createDish(...), HttpStatus.CREATED)

确保您已导入 org.springframework.http.HttpStatus

【讨论】:

得到错误:构造函数 ResponseEntity(String, HttpStatus) 未定义 @devPrakash 在您的情况下,第一个参数必须是 Customer,而不是 String

以上是关于如何在 ResponseEntity 中返回已创建状态 (201 HTTP)的主要内容,如果未能解决你的问题,请参考以下文章

在 ResponseEntity 正文中返回 null (Spring Boot RESTful)

春季无法返回带有异常详细信息的 ResponseEntity

ResponseEntity,如何获取html中的body

使用ResponseEntity进行返回json数据

如何使用 ResponseEntity 返回 JSONObject 而不是 HashMap? (未找到类型返回值的转换器:类 org.json.JSONObject)

Spring + Angular:如何以角度解析 ResponseEntity?