[백엔드] 스프링부트3 자바백엔드 개발입문 11장

sa_woll 2024. 1. 13. 19:17

11.1 REST API의 동작 이해하기
- 클라이언트가 보내는 HTTP 요청 메시지의 첫 줄에는 시작 라인인 요청 라인이 있고 아래에 헤더와 본문이 있다.
- 응답으로 오는 상태코드는 요청이 성공했을 때는 200을 반환한다.
- REST API의 응답 표준으로 사용하는 JSON은 키와 값의 쌍으로 된 속성으로 데이터를 표현한다.
- REST: HTTP URL로 서버의 자원을 명시하고 HTTP 메서드로 해당 자원에 대해 CRUD하는 것
- API: 클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스
- REST API란 REST 기반으로 API를 구현한 것

11.2 REST API의 구현 과정
- REST API의 URL을 설계해야 한다.
- 조회 요청은 /api/articles
- 생성 요청은 /api/articles 또는  /api/articles/{id}
- 수정 요청은 /api/articles/{id}
- 삭제 요청은 /api/articles/{id}
- URL 요청을 받아 그 결과를 JSON으로 반환해 줄 컨트롤러를 만든다. 이때 REST 컨트롤러와 Responsentity클래스를 활용한다.

11.3 REST API 구현하기
- @RestController를 사용해야 한다.
- REST 컨트롤러와 일반 컨트롤러의 차이: REST 컨트롤러는 JSON이나 텍스트같은 데이터를 반환하고 일반 컨트롤러는 뷰 페이지를 반환한다.
- GET: 모든 게시글 조회. return문에는 findAll()메서드를 사용. articleRepository를 선언하고 @Autowired 어노테이션을 붙인다. 단일 게시글 조회시에는 @GetMapping의 URL 뒤에 {id}를 붙인다.
- POST: 데이터 생성 요청. 반환형이 Article인 create() 라는 메서드를 정의하고 수정할 데이터를 dto 매개변수로 받아온다. dto를 엔티티로 변환하여 article 변수에 넣고 articleRepository를 통해 db에 저장 후 반환. json 데이터를 받아와야 하므로 @RequestBody 어노테이션 추가
- PATCH: 데이터 수정 요청. 수정용 엔티티를 만든다. db에서 대상 엔티티를 조회해 가져온다. articleRepository, findById를 통해 db에서 해당id를 가진 엔티티를 가져온다. article 엔티티에 담긴 수정용 데이터를 db에 저장한 후 updated라는 이름의 변수에 저장한다. 수정된 데이터는 ResponseEntity에 담아서 보낸다.
- DELETE: 삭제 요청. DB에 삭제할 대상 엔티티가 있는지 조회하고 없으면 null을 반환한다. 반환받은 값을 target에 저장. 잘못된 요청이 아니라면 대상 엔티티를 삭제하고 ResponseEntity의 상태에 HttpStatus.OK , 본문에는 null을 실어보낸다.

마무리
1. REST API
REST는 HTTP URL로 서버의 자원을 명시하고 HTTP 메서드로 해당 자원에 대해 CRUD하는 것을 말한다. API는 클라이언트가 서버의 자원을 요청할 수 있도록 서버 측에서 제공하는 인터페이스이다.

2. REST 컨트롤러
REST API로 설계된 URL요청을 받아 처리하는 컨트롤러. 

3. REST컨트롤러의 특징
@RestController 어노테이션을 붙여 선언한다.
데이터 조회, 생성, 수정, 삭제 요청을 HTTP 메서드에 맞게 각각 @GetMapping, @PostMapping, @PatchMapping, @DeleteMapping으로 받아 처리한다

4. ResponseEntity
REST 컨트롤러의 반환형, REST API의 응답을 위해 사용하는 클래스.

5. HttpStatus
HTTP 상태 코드를 관리하는 클래스. 200은 HttpStatus.OK