Rest API란 무엇일까?
- 웹 애플리케이션은 HTTP 메소드를 이용해 서버와 통신한다. 대표적으로 다음과 같다.
- GET: 웹 페이지나 데이터를 요청한다.
- POST: 새로운 글이나 데이터를 전송한다.
- DELETE: 저장된 글이나 데이터를 삭제한다.
- 클라이언트와 서버가 HTTP 통신을 할 때는 어떤 요청을 보내고 받느냐에 따라 메소드의 사용이 달라진다.
- 이 메소드의 사용은 아무런 규칙 없이 이루어지는 것이 아니고, 제대로 보내고 받을 수 있는 일종의 규약이 존재한다. 이 규약을 REST API(Represntational State Transfer API)라고 한다.
- 즉, 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말한다.
- 제대로 보내고 받을 수 있도록하는 방식을 말하는데, 그렇다면 어떻게 만들 수 있을까?
Richardson 성숙도 모델 (RMM)
- 리차드슨이라는 사람이 좋은 REST API를 작성하기 위해 지켜야 할 규칙들을 구조화하여 모델을 만들었다. 이 모델을 살펴보면 어떤게 좋은 REST API인지, 어떻게 해야 만들수 있을지 감을 잡을 수 있을 것이다.
0단계: HTTP 사용
- HTTP 프로토콜을 사용하는 것이 REST API를 만드는 것의 출발점이다. 따라서 이번 단계에서는 HTTP 프로토콜을 사용하면 된다.
1단계: Endpoint 사용
- 개별 리소스와 통신을 준수하기 위해, 개별 리소스에 맞는 적절한 엔드포인트를 사용하여 요청과 응답을 해야한다.
※엔드포인트
: 요청을 보낸 곳과 응답을 해줄 리소스가 저장된 장소이다. API에서는 엔드포인트는 URL주소로 표기되어 클라이언트가 원하는 리소스의 위치를 나타내고, 요청을 보낸 위치를 나타낸다.
- `/doctors/허준` 이라는 엔드포인트에 접근하여 date를 조회하는 메소드를 사용했고, 의사 허준에 대한 리소스에 성공적으로 접근하여 데이터를 조회했다.
- `/slots/12` 이라는 엔드포인트에 접근하여 patrient를 추가하는 메소드를 사용했고, id가 123인 환자의 예약 정보 리소스에 성공적으로 접근하여 patient를 추가했다.
- `doctors`, `slots`과 같은 엔드포인트 작성 시, 동사, HTTP 메소드, 혹은 어떤 행위에 대한 단어 사용은 지양하고, 리소스에 집중해 명사 형태의 단어로 작성해야 한다.
- 또한 `reason: `과 같이 사용한 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해 주어야 한다.
2단계: 적절한 HTTP 메소드 사용
- 앞의 예시처럼 모든 요청을 POST 메소드를 사용할게 아니라, CRUD(Create, Read, Update, Delete) 용도에 맞는 HTTP 메소드를 사용해야 한다.
- 예약 가능한 시간 확인하기 위한 요청에는 GET 메소드와 date 파라미터를 이용하여 요청한다.
- 응답 코드도 `201 Created`로 명확하게 작성해야 하며, 이때 클라이언트가 Location 헤더에 작성된 URI를 통해 관련 리소스를 확인 할 수 있도록 해야한다.
3단계: 응답에 리소스의 URI를 포함한 링크 요소 삽입
3단계는 필수적인 것은 아니다.
- 예약 가능한 시간 확인 요청에 대한 응답에 링크 요소를 삽입한다. 이 링크 요소에는 그 시간대에 예약을 할 수 있는 링크를 삽입하는 기능을 넣는다. 그러면 클라이언트는 더욱 편리하게 API를 이용할 수 있다.
'서버지식 > 웹 서비스' 카테고리의 다른 글
Cloud Front로 S3의 정적 콘텐츠를 전세계에 배포해보자! (0) | 2022.07.27 |
---|---|
[HTTP]Remote Address (0) | 2022.02.23 |
[HTTP]네이버를 통해 쿠키역할 배우기 (0) | 2022.02.23 |
[HTTP]실제 네트워크를 보고 유추해보자 (0) | 2022.02.23 |
[HTTP]표현 헤더(Representation Headers)와 콘텐츠 협상(Content negotiation) (0) | 2022.02.23 |