Spring Rest API - 도메인 및 서비스 로직 작성하기

목차

Spring Boot Rest API - 도메인 및 서비스 로직 작성하기

User 도메인 클래스 생성

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private Date joinDate;
}

서비스 클래스 생성

@Service
public class UserDaoService {
// 관계형 데이터베이스를 사용하지 않고 Memory 데이터를 사용
private static List<User> users = new ArrayList<>();
private static int usersCount = 3;

static{
users.add(new User(1, "Kenneth", new Date()));
users.add(new User(2, "Alice", new Date()));
users.add(new User(3, "Elena", new Date()));
}

// 전체 사용자 조회
public List<User> findAll(){
return users;
}

// 개별 사용자 조회
public User save(User user){
if(user.getId() == null){
user.setId(++usersCount);
}

users.add(user);
return user;
}

// id값을 이용한 사용자 조회
public User findOne(int id){
for (User user : users){
if(user.getId() == id){
return user;
}
}
return null;
}
}

사용자 요청 처리 Controller 추가

@RestController
@RequiredArgsConstructor
public class UserController {

private final UserDaoService service;

@GetMapping("/users")
public List<User> retrieveAllUsers(){
return service.findAll();
}

// path variable을 이용한 요청을 처리
@GetMapping("/users/{id}")
public User retrieveUser(@PathVariable int id){
User user = service.findOne(id);
return user;
}
}

Service 로직 확인을 위한 Test 코드 작성하기

@Test
public void 모든_유저들을_가져온다() throws Exception {
ResultActions resultActions = mockMvc.perform(get("/users"));

resultActions
.andExpect(status().isOk())
.andDo(print());
}
  • PathVariable 로 보낸 요청으로 Service 로직이 정상적으로 수행되고 반환 값이 정상적으로 왔는지 확인한다.
@Test
public void 특정_유저를_가져온다() throws Exception {
ResultActions resultActions = mockMvc.perform(get("/users/1"));

resultActions
.andExpect(status().isOk())
.andExpect(jsonPath("id").value(1))
.andDo(print());
}
Share