개요
본 포스팅의 목적
- 다양한 클라이언트의 요청에 응답하는 REST API Server와 응답 데이터 형식인 JSON에 대해 이해한다.
- 이 때 사용되는 HTTP프로토콜의 기본 메서드를 이해하고, 요청과 응답의 상황별 상태정보를 분석해본다.
REST API와 JSON
1. REST API (Representational State Transfer API)의 등장 배경
- 웹은 클라이언트와 서버간의 요청과 응답으로 동작하는데, 클라이언트로는 웹 브라우저뿐만 아니라 스마트폰, 태블릿 등 다양하다. 서버는 이러한 다양한 클라이언트의 요청에 일일이 View페이지를 응답하기란 쉽지 않다.
- REST API란 서버의 자원을 다양한 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계방식으로, HTTP 요청에 대한 응답으로 서버의 자원을 반환한다.
- 이 때, 서버에서 보내는 응답이 특정 기기에 종속되지 않도록 모든 기기에 통용될 수 있는 데이터(JSON)를 반환한다.
- 즉, 다양한 클라이언트의 요청에 일일이 View페이지를 응답하는 것이 아니라, JSON 데이터를 응답하는 것이다.
2. JSON (JavaScript Object Notation)
- JSON이란, 한마디로 말하자면 자바스크립트 방식을 차용한 객체 표현식으로, 키(key)와 값(value)으로 구성된 속성의 집합이다.
- 아래의 예시는 강아지 객체를 표현하기위한 JSON 데이터이다.
{
"name" : "망고",
"breeds" : "골든리트리버",
"age" : 2
}
HTTP 요청 메서드와 상태코드(status)의 종류
1. HTTP 요청 메서드의 종류와 역할
HTTP 요청 메서드 | 역할 |
---|
GET | 데이터 조회 요청 |
POST | 데이터 생성 요청 |
PUT / PATCH | 데이터 수정 요청 |
DELETE | 데이터 삭제 요청 |
* PUT과 PATCH의 차이점
- PUT : 기존 데이터를 전부 새로운 내용으로 변경, 만약 기존 데이터가 없다면 새로 생성한다.
- PATCH : 기존 데이터 중에서 일부만 새로운 내용으로 변경할 때 사용된다.
2. HTTP 상태코드의 종류와 의미
HTTP 상태코드 | 의미 |
---|
2XX | 클라이언트의 요청 처리 성공 |
4XX | 클라이언트의 잘못된 요청 |
5XX | 서버 내부 에러 |
HTTP 요청과 응답 실습 (GET / POST / PUT,PATCH / DELETE)
- 클라이언트와 서버의 요청과 응답은 HTTP 메세지에 실려 전송된다.
- 요청할 때는 HTTP 요청 메세지에, 응답할 때는 HTTP 응답 메세지에 내용이 실린다.
- 연습용 REST API서버인 JSON Placeholder(https://jsonplaceholder.typicode.com)와 요청 및 응답 결과를 확인해볼 수 있는 크롬 확장프로그램 Talend API Tester를 이용하여 상황별로 요청과 응답 결과를 HTTP 메세지를 통해 분석해보자.
1. GET 요청과 응답
2. POST 요청과 응답
- 예를 들어, 잘못된 JSON 데이터 형식(ex) 구문 오류)으로 POST요청 시 상태코드는 500(Internal Server Error), HTTP 응답 Body는 SyntaxError: Unexpected token t in JSON at position 6와 같은 에러문구를 반환하게 된다.
3. PATCH 요청과 응답
4. DELETE 요청과 응답
결론
- 위에서 살펴본 바와 같이 REST API 서버는 특정 자원을 갖고 있고, 클라이언트는 그 자원을 조회할 지, 생성할 지, 수정 및 삭제할 지에 따라 각기 다른 URL(자원의 식별자)과 HTTP 요청 메서드(행위)를 이용하여 서버에 보다 명확한 의사전달을 한다고 볼 수 있다.
참고자료
- 코딩 자율학습 : 스프링 부트 3 자바 백엔드 개발 입문(홍팍 저)