[Spring Boot] REST API, CRUD 구현
이전 글
2022.03.05 - [Java & Framework/Spring Boot] - [Spring Boot] REST API, CRUD 설계
2022.03.04 - [Java & Framework/Spring Boot] - [Spring Boot] Spring MVC로 RESTful API 서비스 구현
2022.03.04 - [Computer Science] - REST, RESTful
2022.03.03 - [Java & Framework/Spring Boot] - [Spring Boot] 스프링 특징 & 스프링 부트 간단한 소개
이번 글에서는 REST API, CRUD를 구현하는 것으로 Controller, Service 클래스를 구현한다. 스프링 어노테이션을 이용해 HTTP 요청을 처리한다. 그리고 HTTP 요청과 관련된 파라미터를 스프링 어노테이션을 이용해 구현한다.
# DTO/VO
CRUD의 대상이 될 Model을 담당하는 DTO/VO를 생성한다. : User class
폴더 구조와 User Class
# CRUD : Read
■ 유저 정보를 다루는 Controller를 생성한다. UserController 클래스
■ 유저 정보 전체 불러오기를 구현한다.
UserController : getUsers()
UserService : getUsers()
UserRepository : getUsers()
요청(http://localhost:8081/users) 및 실행결과
■ 특정한 유저 정보 1개 데이터 불러오기를 구현한다.
@PathVariable 어노테이션은 요청 URL을 파라미터로 사용하여 경로 변수로 지정할 수 있다.
@PathVariable
요청 URL을 파라미터로 사용 (경로 변수)
요청 URL : /users/{userid}
파라미터로 처리 : @PathVariable("userid") String userid
* 경로의 값을 변수로 사용하기 위해서 중괄호({})로 묶어준다.
UserController : getUserByUserId()
UserService : getUserByUserId()
UserRepository : getUserByUserId()
# CRUD : Create
■ 유저 생성하기를 구현한다.
@RequestBody 어노테이션은 클라이언트에서 들어오는 DATA를 JSON 데이터로 요청하여, Java Object에 맞게 채워 넣어준다. Model Class(ex:User)는 클라이언트 form data나 parameter를 데이터로 요청한다.
Object가 아닌 낱개의 형태로 데이터를 받고 싶은 경우에는 @RequestParam 어노테이션을 사용해서 변수 하나씩 받을 수 있다.
@PostMapping("")
public Map<String, Object> createUser(
@RequestParam(value="userid") Integer userid,
@RequestParam(value="username") String username
) {
Map<String, Object> map = new HashMap<>();
userService.createUser(userid, username);
map.put("result", "added");
return map;
}
다음 코드에서는 @RequestBody 어노테이션을 사용한다.
UserController : registUser()
UserService : registUser()
UserRepository : registUser()
REST Client인 Postman 웹 확장 기능을 사용해 POST Method를 테스트해보았다.
전체 출력을 해보면 POST로 추가했던 User가 추가되어 있는 것을 확인할 수 있다.
# CRUD : Update
■ 유저 정보 수정하기를 구현한다.
UserController : modifyUser()
UserService : modifyUser()
UserRepository : modifyUser()
PUT 요청으로 300번의 이름 변경하기
기존->수정
# CRUD : Delete
유저 정보 삭제하기를 구현한다.
UserController : removeUser()
UserService : removeUser()
UserRepository : removeUser()
# 정리
■ 스프링을 이용한 웹 서비스 개발은 Layered Architecture를 활용하여 개발하고, 데이터는 모델 클래스를 작성하여 처리합니다.
■ HTTP의 GET, POST, PUT, DELETE를 주로 활용하여 데이터의 CRUD를 구현합니다.
■ 웹 서비스 테스트는 REST 클라이언트 툴을 통해 가능합니다. (Postman)
■ 스프링 REST 애플리케이션은 Layered Architecture로 작성되고, @Controller가 최초로 응답을 받고 @Service를 통해 기능을 수행합니다.
■ 각 레이어는 각각의 역할을 가지며 Controller 단은 클라이언트의 요청을 분석해서 Service 단으로 넘겨주는 역할을 수행합니다.
이번 글은 스프링 부트에서 RESTful API의 CRUD 구현에 대해 알아보았습니다.
도움이 되셨다면 좋아요, 구독!
광고 클릭은 제게 큰 힘이 됩니다.
감사합니다!
'java, spring' 카테고리의 다른 글
[Spring Boot] AOP - Aspect Oriented Programming (0) | 2022.03.19 |
---|---|
[Spring Boot] RESTful 웹서비스 테스트 (0) | 2022.03.17 |
[SpringBoot] API Security and JWT (0) | 2022.03.15 |
[SpringBoot] MariaDB 연결하기 (0) | 2022.03.10 |
[Spring Boot] REST API, CRUD 설계 (0) | 2022.03.05 |