Restful API
1. REST(Representational State Transfer)란?
REST의 개념
HTTP URI를 통해 자원(Resource)을 명시하고 HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미
- REpresentational State Transfer
= 표현된 상태 전송
= 자원(HTTP method)의 상태를 표현 하고, 전송하는 것
- 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에, 웹의 장점을 최대한 활용 할 수 있는 아키텍쳐 스타일 입니다.
- 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나 입니다.
2. REST의 장단점
-
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라 구축이 필요 없습니다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능합니다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 직관적으로 쉽게 파악 가능합니다.
- 서버와 클라이언트 역활을 명확하게 분리합니다.
-
단점
- 표준이 없어 정의가 필요합니다.
- 사용 가능한 메소드가 HTTP Method(POST, GET, PUT, DELETE) 4가지로 제한적입니다.
- 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구됩니다.
- 인터넷 익스플로어와 같은 구형 브라우저에서 지원하지 않는 경우가 있습니다.
3. REST API란?
- REST 기반으로 서비스 API를 구현한 것
- OpenAPI 대부분 REST API를 제공
4. REST API의 설계 규칙
- URI는 명사를 사용한다.(리소스명은 동사가 아닌 명사를 사용해야한다.)
- 전달하고자 하는 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 사용한다.
- 소문자를 사용한다.
- 언더바(_)대신 하이픈(-)을 사용한다.
- 슬래시(/)로 계층 관계를 표현한다.
- URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
- 행위는 URI 대신 Method를 사용하여 전달한다.
- 파일 확장자는 URI에 포함시키지 않는다.
- URI에 작성되는 영어를 복수형으로 작성한다.
5. RESTful API란?
- REST의 설계 규칙을 잘 지켜서 설계한 REST의 원리를 잘 따르는 시스템을 RESTful이라고 칭한다.
6. RESTful API가 아닌 경우
- CRUD 기능을 모두 POST로만 처리하는 API
GET과 POST 이외에 다른 메소드
PUT
서버에게 resource의 업데이트를 요청하거나 resource가 없다면 새로운 resource를 생성해 달라고 요청합니다. 회원 정보 수정 등에 사용됩니다.
PUT 메서드는 PATCH 메서드와 비교해서 전체 데이터를 교체하는 차이점이 있습니다.
가령 user data의 구조가 user._id, user.firstName, user.lastName, user.age라고 한다면, 회원정보 수정시 PUT은 _id를 찾아 age만 업데이트하더라도 항상 모든 필드값을 가져와서 모든 필드를 항상 새로운 값으로 교체합니다.
PATCH
서버에게 resource의 업데이트를 요청합니다. 회원정보 수정 등에 사용됩니다.
PATCH 는 부분적인 데이터만 업데이트하는 차이점이 있습니다.
DELETE
DELETE 메서드는 특정 리소스를 삭제합니다.
HEAD
HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.
CONNET
CONNET 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺습니다.
OPTIONS
OPTIONS 메서드는 목적 리소스의 통신을 설정하는 데 쓰입니다.
TRACE
TRACE 메서드는 목적 리소스의 경로를 따라 메시지 loop-back을 테스트 합니다.
Reference
[Network] HTTP의 GET과 POST의 차이점 그리고 그외 메소드
https://blog.naver.com/hongin90/223047083563