如何在 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
【讨论】:
得到错误:构造函数 ResponseEntityCustomer
,而不是 String
以上是关于如何在 ResponseEntity 中返回已创建状态 (201 HTTP)的主要内容,如果未能解决你的问题,请参考以下文章
在 ResponseEntity 正文中返回 null (Spring Boot RESTful)
春季无法返回带有异常详细信息的 ResponseEntity
如何使用 ResponseEntity 返回 JSONObject 而不是 HashMap? (未找到类型返回值的转换器:类 org.json.JSONObject)