애플리케이션이 서로 정보를 교환하고 통신할 수 있도록 하는 규칙
웹 개발을 예로 들면, 클라이언트에서는 필요한 정보를 요청하고, 서버는 그에 대한 응답을 반환한다. 이 요청
- 응답
의 다리가 되어주는 것이 API다.
즉, 고유한 기능을 가진 소프트웨어가 서로 어떻게 통신할 것인지 그 규칙을 정의하는 방법, 또는 그 규칙 자체를 API라고 할 수 있다.
API를 설계한다는 것은 클라이언트와 서버가 어떤 방식으로 데이터를 주고 받을지 규칙을 정한다는 뜻이다.
RESTful API를 살펴보기 전에 REST를 알아보자.
REST란 개념은 로이 필딩(Roy Fielding)의 논문에서 처음 등장했다.
로이 필딩은 HTTP 1.0과 1.1의 표준화에 기여했던 사람 중 한명인데, HTTP 프로토콜의 설계에 맞게 API를 설계하고 웹의 장점을 최대한 이용하자는 취지로 REST 아키텍쳐를 발표했다.
HTTP 프로토콜을 기반으로 하는 웹 서비스 아키텍쳐로, URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원을 처리하는 것을 말한다.
[URI]
특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다.
웹 기술에서 자원를 식별하는 고유한 문자열이다.
REST 아키텍쳐는 두 가지 특징을 만족해야 한다.
1. URI는 정보의 자원을 표현해야 한다.
자원의 이름은 명사를 사용해야 하며, 행위가 들어가선 안 된다.
# bad
GET /getUser/1
# good
GET /user/2
2. 자원에 대한 행위는 HTTP Method로 표현한다.
# bad
GET /delete/user/1
# good
DELETE /user/1
REST는 자원(Resource), 행위(Verb), 표현(Representations)으로 구성된다.
자원
- URI
행위
- HTTP 메서드
표현
- HTTP 요청 헤더 ( 자원에 대한 행위의 내용)
덕분에 REST 아키텍쳐를 기반으로 설계된 API는 API 자체만으로 어떤 역할을 하는지 쉽게 알 수 있다.
주로 5가지의 메서드를 사용해 자원에 대한 행위를 정의한다.
GET
POST
PUT
PATCH
DELETE
클라이언트가 서버에 보낸 요청에 대한 결과를 나타내는 세자리 숫자다.
2XX
성공
3XX
리다이렉트
4XX
클라이언트 에러
400 Bad Request : 클라이언트 요청 자체가 부적절
401 Unauthorized : 인증되지 않은 사용자
403 Forbidden : 인증된 사용자지만 해당 자원에 대한 권한이 없을 때
404 Not Found : 요청된 자원이 존재하지 않을 때
5XX
서버 에러
앞서 알아본 REST의 설계 원칙을 따라 만들어진 API를 RESTful API라고 한다.
HTTP 프로토콜을 기반으로 하는 웹 서비스 아키텍쳐인 REST 패턴을 따라 설계된 것이 RESTful API다.
즉, URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원을 처리하는 원칙에 따라 작성된 API를 RESTful API라고 한다.
장점
서버는 - API 제공
클라이언트 - 사용자 인증 혹은 컨텍스트 관리(세션, 로그인 정보 등)
단점
https://poiemaweb.com/js-rest-api
http://www.incodom.kr/REST
https://www.charlezz.com/?p=44767
https://www.webfx.com/web-development/glossary/http-status-codes/