Representational State Transfer의 약자
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
REST의 구성요소
1. 자원(Resource) : HTTP URI
2. 자원에 대한 행위(Verb) : HTTP Method
3. 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
즉, REST란
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
HTTP Method(GET, POST,PUT, DELETE)를 통해
해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.
*CRUD Operation
Create(데이터 생성)-POST
Read(데이터 조회)-GET
Update(데이터 수정)-PUT
Delete(데이터 삭제)-DELETE
REST의 장, 단점
REST의 특징을 기반으로 서비스 API를 구현한 것
API란
- 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
REST API의 특징
1. 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
2. REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
즉, REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있다.
최근 OpenAPI 등을 제공하는 업체 대부분은 REST API를 제공한다.
REST API의 설계 규칙
1. 소문자를 사용한다.GET /Members/2 -> GET /members/2
- 언더바(_) 대신 하이픈(-)을 사용한다.
http://www.example.com/java_test (X) http://www.example.com/java-test (o)
- 마지막에 슬래시(/)를 포함하지 않는다.
http://www.example.com/test/ (X) http://www.example.com/test/ (o)
- URI에 HTTP Method가 들어가면 안된다
GET http://www.example.com/member/delete/2 (x) DELETE http://www.example.com/member/2 (o)
- URI에 행위에 대한 동사 표현이 들어가면 안된다.(즉, CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.)
GET http://www.example.com/member/insert/2 (x) POST http://www.example.com/member/2 (o)
- 슬래시( / )로 계층 관계를 표현한다.
http://www.example.com/company/member
- 파일 확장자는 URL에 포함시키지 않는다.
http://www.example.com/study/photo.jpg (x) http://www.example.com/study/photo (o)
REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 한다.
즉, REST의 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭된다.
RESTful의 목적
이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
RESTful한 API를 구현하는 근본적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이니,
성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.
🙇 참고 사이트 🙇
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html https://dev-coco.tistory.com/97 https://dev-cool.tistory.com/32