【问题标题】:How to return CREATED status (201 HTTP) in ResponseEntity如何在 ResponseEntity 中返回已创建状态 (201 HTTP)
【发布时间】: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。

【问题讨论】:

标签: java spring-boot rest http spring-mvc


【解决方案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
      猜你喜欢
      • 2011-12-11
      • 2019-11-14
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多