728x90
반응형

클라이언트가 보내는 HTTP 요청 메세지의 첫줄 : 시작라인 = 요청 라인

그 아래 헤더 와 본문

 

응답 메세지 역시 첫줄은 상태 라인, 그 아래 헤더와 본문이 있음

 

요청이 성공하면 200, 데이터 생성 완료하면 201

찾을 수 없으면 404, 서버 오류시 500 

 

REST API 응답 표준으로 사용하는 JSON 은 키와 값의 쌍으로 된 속성으로 데이터 표현

JSON의 value로 배열을 넣을 수도, 다른 JSON 을 넣을 수 도 있음

 

 

REST : HTTP URL로 서버 자원을 명시하고, HTTP 메서드로 해당 자원에 대해 CRUD 하는 것

API : 클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스

 

 

REST API 구현과정

REST API 구현위해 URL을 설계해야 한다.

get,post,patch, delete 를 어떻게 구현할까

 

조회 요청 : /api/articles or /api/articles/{id} : GET 메서드로 Article 목록 전체 혹은 단일 조회

생성 요청 : /api/articles : POST 메서드로 새로운 Article 생성해 목록에 저장

수정 요청 : /api/articles/{id} : PATCH 메서드로 특정 Article 내용 수정

삭제 요청 : /api/articles/{id] : DELETE 메서드로 특정 Article 삭제

 

주소 설계가 끝났다면 URL 요청을 받아 그 결과를 JSON 으로 반환해줄 컨트롤러도 만들어야 한다.

게시판 만들 때는 일반 컨트롤러 ArticleController 사용했지만 REST API 로 응답 주고 받기 위해서는 

REST 컨트롤러 사용, 응답 할 때 적절한 상태 코드를 반환하기 위해 ResponseEntity 라는 클래스도 활용

 

 

JSON 형태가 REST API URL 로 REST 컨트롤러에 요청하면 적절한 상태로 반환하는 ResponseEntity 클래스 응답

 

 

 

REST API 구현하기

기존과 마찬가지로 클래스 파일을 만들지만 클래스 위에 @RestController 붙인다.

 

일반 컨트롤러와 차이

원래는 mustache 파일을 반환하게 되어있었다.

Talend API Tester 에서 테스트 해보면 Body 파트에 HTML 코드가 있음

 

REST 컨트롤러는 JSON or text 데이터를 반환하는 반면 

일반 컨트롤러는 뷰 페이지를 반환한다.

 

REST API : GET 구현

api/articles 에 GET 메서드로 요청

 

새 컨트롤러가 필요

 

ArticleApiController 만들기

 

GET POST PATCH DELETE 구현하기

 

 

POST : 매개변수로 dto만 받아오면 해결되나? 아니다.

REST API 에서 데이터를 생성할 때는 JSON 데이터를 받아와야 하므로 단순히 dto 로 받을 수 있는게 아님

 

dto 매개변수 앞에 @RequestBody 붙이면 

요청시 Body에 실어 보내는 데이터를 create()메서드의 매개변수로 받아올 수 있다.

 

Patch

수정용 엔티티 생성하기

DB에 대상 엔티티가 있는지 확인하기

없거나 수정하려는 id가 잘못됐을 경우 처리하기

대상 엔티티가 있으면 수정 내용으로 업데이트하고 정상 응답(200) 보내기

 

DELETE

삭제하려고 입력 받은 id의 데이터를 찾는다

그 대상이 존재하지 않는다면 bad_Request 알림 띄우고 종료

존재한다면 리파지토리에서 delete 메서드를 이용해서 삭제하고 OK 알림 띄움

 

반응형

+ Recent posts