Cześć,
Tak jak w temacie - powiedzcie proszę czy w codziennej pracy przy restowych serwisach korzystacie z ww metod np. przy tworzeniu Usera itd.
Pozdrawiam!
Cześć,
Tak jak w temacie - powiedzcie proszę czy w codziennej pracy przy restowych serwisach korzystacie z ww metod np. przy tworzeniu Usera itd.
Pozdrawiam!
Jeśli jakaś operacja może failować i chcesz zwrócić informacje o kodzie błędu to jak najbardziej. Możesz sobie opakować wynik w cos w stylu:
public static <T> ResponseEntity<T> formResponse(Optional<T> data) {
return data.map(ResponseEntity::ok)
.orElse(ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null));
}
Czyli jeśli optional jest pusty to zwrócisz http 500, a jeśli nie to zwrócisz wyniki. Tu ciche założenie że warstwa logiki zwraca do kontrolera optionala. Analogicznie można zrobić z jakimś Either jeśli chcesz rozpatrywać wiecej opcji.
Czyli jak napiszę coś takiego, nie będzie to uznane za średniowiecze itd?
@RequestMapping(value = "/user/", method = RequestMethod.POST)
public ResponseEntity<?> createUser(@RequestBody User use) {
logger.info("Creating User : {}", user);
if (userService.isUserExist(user)) {
logger.error("Unable to create. A User with name {} already exist", user.getName());
return new ResponseEntity(new CustomErrorType("Unable to create. A User with name " +
user.getName() + " already exist."),HttpStatus.CONFLICT);
}
userService.saveUser(user);
return new ResponseEntity<String>(headers, HttpStatus.CREATED);
}
Prawie bo ten @RequestBody
sugeruje że masz tu @Controller
zamiast @RestController
.
Korzystam z @RestController czym mogę to zastąpić aby całość ładnie do siebie pasowała ?
@Shalom: mógłbyś podpowiedzieć czym najlepiej zastąpić adnotacje @Requestparam aby spełniało wymóg @RestControllera ?
Wydaje mi się ze dla rest controllera ta adnotacja w ogóle nie jest potrzebna, tak samo jak @ResponseBody
dla wartości zwracanej.