심플하게 만들기 위해 Service Layer 없이 Controller만 생성해서 CRUD API를 만들 것이다.
Controller 틀 만들기
@RestController
@RequestMapping("users")
public class UserController {
private UserDocumentRepository userDocumentRepository;
public UserController(UserDocumentRepository userDocumentRepository) {
this.userDocumentRepository = userDocumentRepository;
}
@PostMapping()
public UserDocument createUser() {
}
}
Request DTO 만들기
UserCreateRequestDto
public class UserCreateRequestDto {
private String id;
private String name;
private Long age;
private Boolean isActive;
public String getId() {
return id;
}
public String getName() {
return name;
}
public Long getAge() {
return age;
}
public Boolean getIsActive() {
return isActive;
}
}
getIsActive()라고 지어주자.Controller 완성하기
@RestController
@RequestMapping("users")
public class UserController {
private UserDocumentRepository userDocumentRepository;
public UserController(UserDocumentRepository userDocumentRepository) {
this.userDocumentRepository = userDocumentRepository;
}
@PostMapping()
public UserDocument createUser(**@RequestBody UserCreateRequestDto requestDto**) {
**UserDocument user = new UserDocument(requestDto.getId(), requestDto.getName(), requestDto.getAge(), requestDto.getIsActive());
return userDocumentRepository.save(user);**
}
}
Postman으로 테스트해보기
{
"id": "1",
"name": "Jaeseong",
"age": 20,
"isActive": true
}

{
"id": "2",
"name": "JSCODE",
"age": 25,
"isActive": false
}

Controller 만들기
@RestController
@RequestMapping("users")
public class UserController {
private UserDocumentRepository userDocumentRepository;
public UserController(UserDocumentRepository userDocumentRepository) {
this.userDocumentRepository = userDocumentRepository;
}
@PostMapping()
public UserDocument createUser(@RequestBody UserCreateRequestDto requestDto) {
UserDocument user = new UserDocument(requestDto.getId(), requestDto.getName(), requestDto.getAge(), requestDto.getIsActive());
return userDocumentRepository.save(user);
}
**@GetMapping()
public Page<UserDocument> findUsers() {
return userDocumentRepository.findAll(PageRequest.of(0, 10));
}
@GetMapping("/{id}")
public UserDocument findUserById(@PathVariable String id) {
return userDocumentRepository.findById(id)
.orElseThrow(() -> new RuntimeException("존재하지 않는 사용자입니다."));
}**
}
Postman으로 테스트해보기
GET localhost:8080/users

GET localhost:8080/users/1

GET localhost:8080/users/2

Request DTO 만들기
UserUpdateRequestDto
public class UserUpdateRequestDto {
private String name;
private Long age;
private Boolean isActive;
public String getName() {
return name;
}
public Long getAge() {
return age;
}
public Boolean getIsActive() {
return isActive;
}
}
getIsActive()라고 지어주자.Controller 완성하기
@RestController
@RequestMapping("users")
public class UserController {
private UserDocumentRepository userDocumentRepository;
public UserController(UserDocumentRepository userDocumentRepository) {
this.userDocumentRepository = userDocumentRepository;
}
...
**@PutMapping("/{id}")
public UserDocument updateUser(@PathVariable String id, @RequestBody UserUpdateRequestDto requestDto) {
UserDocument existingUser = userDocumentRepository.findById(id)
.orElseThrow(() -> new RuntimeException("존재하지 않는 사용자입니다."));
existingUser.setAge(requestDto.getAge());
existingUser.setName(requestDto.getName());
existingUser.setIsActive(requestDto.getIsActive());
return userDocumentRepository.save(existingUser);
}**
}
Postman으로 테스트해보기

