From 74ee92c8ec09870f03156737f99f02c2144beca9 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Thu, 26 Nov 2020 18:39:53 +0900 Subject: [PATCH] http stauts code handling --- .../user/UserController.java | 19 +++++++++++++++++-- .../user/UserNotFoundException.java | 15 +++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 restful-web-service/src/main/java/com/example/restfulwebservice/user/UserNotFoundException.java diff --git a/restful-web-service/src/main/java/com/example/restfulwebservice/user/UserController.java b/restful-web-service/src/main/java/com/example/restfulwebservice/user/UserController.java index c81d4345..9bc0d511 100644 --- a/restful-web-service/src/main/java/com/example/restfulwebservice/user/UserController.java +++ b/restful-web-service/src/main/java/com/example/restfulwebservice/user/UserController.java @@ -1,7 +1,10 @@ package com.example.restfulwebservice.user; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; +import java.net.URI; import java.util.List; @RestController @@ -19,12 +22,24 @@ public class UserController { @GetMapping("/users/{id}") public User retrieveUser(@PathVariable int id) { - return userDaoService.findOne(id); + User user = userDaoService.findOne(id); + if (user == null) { + throw new UserNotFoundException(String.format("ID[%s] not found", id)); + } + + return user; } @PostMapping("/users") - public void createUser(@RequestBody User user) { + public ResponseEntity createUser(@RequestBody User user) { User savedUser = userDaoService.save(user); + + URI location = ServletUriComponentsBuilder.fromCurrentRequest() + .path("/{id}") + .buildAndExpand(savedUser.getId()) + .toUri(); + + return ResponseEntity.created(location).build(); } } diff --git a/restful-web-service/src/main/java/com/example/restfulwebservice/user/UserNotFoundException.java b/restful-web-service/src/main/java/com/example/restfulwebservice/user/UserNotFoundException.java new file mode 100644 index 00000000..5fc23681 --- /dev/null +++ b/restful-web-service/src/main/java/com/example/restfulwebservice/user/UserNotFoundException.java @@ -0,0 +1,15 @@ +package com.example.restfulwebservice.user; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +// HTTP Status code +// 2XX -> OK +// 4XX -> Client error +// 5XX -> Server error +@ResponseStatus(HttpStatus.NOT_FOUND) +public class UserNotFoundException extends RuntimeException { + public UserNotFoundException(String message) { + super(message); + } +}