앞선 단계에서, REST API를 어떤 식으로 설계할 건지를 소개했으니, 이제는 SNS 어플리케이션용 REST API를 만들 차례이다.
SNS REST API에서의 핵심 resource들은 users와 posts이다.
이번 포스팅에서는 Users에 대한 처리를 해주겠다. Users의 세부정보에는 id, name, birthDate를 저장해야 한다. 그러므로, 사용자의 id, name, birthDate를 저장할 java bean을 만들자!
id, name, birthDate의 멤버변수와 constructors, getters and setters, toString에 대한 코드는 아래와 같다.
public class User {
private Integer id;
private String name;
private LocalDate birthDate;
// Constructor
public User(Integer id, String name, LocalDate birthDate) {
super();
this.id = id;
this.name = name;
this.birthDate = birthDate;
}
// getters and setters
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDate getBirthDate() {
return birthDate;
}
public void setBirthDate(LocalDate birthDate) {
this.birthDate = birthDate;
}
// toString
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", birthDate=" + birthDate + "]";
}
}
User Bean을 중심으로 하는 REST API에서는, User의 상세정보를 저장하고, 검색하고, 특정 사용자를 삭제하는 등의 다양한 작업을 수행하고자 한다.
그리고 데이터베이스를 관리하고, 데이터베이스에 저장된 데이터를 가지고 작업을 하려면, DAO(data access object)를 만들어야 한다.
DAO란, 한마디로 데이터베이스 테이블과 상호작용할 기능들을 추상화해놓은 메서드 모음집이라고 할 수 있다!
@Component
public class UserDaoService {
// JPA/Hibernate -> Database
// UserDaoService -> Static List
private static List<User> users = new ArrayList<>();
static {
users.add(new User(1, "minjiki1", LocalDate.now().minusYears(30)));
users.add(new User(2, "minjiki2", LocalDate.now().minusYears(25)));
users.add(new User(3, "minjiki3", LocalDate.now().minusYears(20)));
}
public List<User> findAll() {
return users;
}
// public User save(User user)
// public User findOne(int id)
}
User클래스와 달리, UserDaoService는 Spring에서 관리해줘야 하니, @Component를 붙여줬다.
구현 기능
public List<User> findAll()
public User save(User user)
public User findOne(int id)
원래 JPA/Hibernate를 통해 Database를 다루지만, 해당 데이터베이스 적용 전에 몇개의 정적 list를 만들어 UserDaoService가 정적 ArrayList와 통신하는지 먼저 체크할 것
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/