첫 면접 당시, Restful 에 대해서 이해했다고 생각했지만 직접 코드를 짜려니 나는 이해하지 못하고 있었던 것이었다.
그래서 Restful을 이해하기위해 스프링 부트를 활용해서 작업을 해보려고한다
유저라는 패키지를 만들어주고 거기안에 클래스를 생성해준다.
@Data // lombok를 통해 생성자를 생성해주지 않아도 괜찮다.
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Date joinDate;
}
User 안에 필드를 정의해준다.
DAOService
@Service // 어노테이션 지정
public class UserDAOService {
private static List<User> users = new ArrayList<>();
private static int usersCount = 3;
static {
users.add(new User(1, "dowoon", new Date()));
users.add(new User(2, "Alice", new Date()));
users.add(new User(3, "dElena", new Date()));
}
public User save(User user) { // 등록
if(user.getId() == null) { // ID의 값이 존재하지 않으면 ID 값을 넣어준다.
user.setId(++usersCount);
}
users.add(user);
return user;
}
public List<User> findAll() { // 전체 사용자 조회
return users;
}
public User findOne(int id) { // 개별 사용자 조회
for (User user : users) {
if ( user.getId() == id ) {
return user;
}
}
return null;
}
}
아직 DB연동이 되어있지 않으므로 임시적으로 데이터를 JSON 형태로 넣어준다.
UserController을 작성해준다.
@RestController
public class UserController {
private UserDAOService service;
public UserController(UserDAOService service) {
this.service = service;
}
@GetMapping("/users")
public List<User> retrieveAllUsers() {
return service.findAll();
}
// GET /users/1 or /users/10 -> String -> int 매핑된다.
@GetMapping("/users/{id}")
public User retrieveUser(@PathVariable int id) {
return service.findOne(id);
}
@PostMapping("/users")
public void createUser(@RequestBody User user) {
User savedUser = service.save(user);
}
}
전체 사용자 조회
개별 사용자 조회
등록
New User 가 추가가 된것을 확인할 수 있다.