Для метода post в контроллере Rest я хочу вернуть 201 код состояния.
я видел два подхода к этому.
Первый -
@PostMapping("/offers")
@ResponseStatus(HttpStatus.CREATED)
public Offer createOffer(@Valid @RequestBody Offer offer) {
return offerRepository.Save(offer);
}
второй подход
@PostMapping("/offers")
public ResponseEntity<Object> createOffer(@Valid @RequestBody Offer offer) {
return offerService.createOffer(offer);
}
ниже мой класс обслуживания
@Override
public ResponseEntity<Object> createOffer(Offer offer) {
Offer uOffer=OfferRepository.save(offer);
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{jobTitle}").
buildAndExpand(uOffer.getJobTitle()).toUri();
return ResponseEntity.created(location).build();
}
поэтому мой вопрос касается первого подхода: мы не используем какие-либо вещи, созданные ResponseEntity.Ceat, так как мы просто возвращаем @ResponseStatus(HttpStatus.CREATED)
из контроллера. Но через секунду мы не используем @ResponseStatus(HttpStatus.CREATED)
, и мы обрабатываем этот код состояния 201 с помощью URI и отзывчивость.
В чем разница между двумя подходами? Кажется, они одинаковы, так как они возвращают один и тот же код ответа 201. Какой из них предпочтительнее?