REST는 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로서, HTTP 프로토콜을 의도에 맞게 디자인하도록 유도하고 있다.
즉, REST는 HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처고, REST API는 REST를 기반으로 서비스 API를 구현한 것을 의미한다.
Representational State Transfer
자원(리소스)의 표현으로 상태를 전달하는 것
URI로 자원을 표현하는 데에 집중하고,** 자원의 상태(행위)에 대한 정의는 HTTP METHOD** 로 하는 것이다.
GET/users/3/profile
👉 user 중 3번 아이디 갖고있는 사람 프로필을 줘!
GET /members/delete/1 (X)
DELETE /members/1 (O)
GET /members/show/1 (X)
GET /members/1 (O)
GET /members/insert/2 (X)
POST /members/2 (O)
https://en.wikipedia.org/wiki/Clean_URL
http://example.com/posts (O)
http://example.com/posts/ (X)
http://example.com/post (X)
http://example.com/get-posts (X)
http://example.com/post-list (O)
http://example.com/post_list (X)
--> URI에는 언더바가 아닌 하이픈을 사용한다.
http://example.com/post/assets/example (O)
http://example.com/post/assets/example.png (X)
--> ```
REST API의 까다로운 제약조건들을 만족시킨 통신 설계 상태이다.
요청의 종류를 서버에게 알려주기 위해서 사용한다.
GET 메소드를 이용하여 데이터를 가져올 때 사용
/users/10
경로 자체에 변수(10)을 사용한 방법
⭐️ 언제? : 전체 데이터 또는 특정 하나의 데이터를 다룰때 사용
리소스를 식별하기 위해 사용됨
⭐️ 데이터를 정렬하거나 필터링할 경우 사용
/users?user_id=10
/users
👉 전체 user리스트를 가져오므로 path Variable 사용
users?occupation=programer
👉 직업이 programer인 user를 가져오므로 Query parameter 사용
/users/123
👉id가 123인 user가져오므로 Path Variable 사용
SOAP (Simple Object Access Protocol): SOAP는 XML 기반의 프로토콜로, 웹 서비스 통신을 위해 설계된 것입니다. REST와는 다른 개념과 구조를 가지고 있으며, 주로 기업 간 통신에 사용됩니다.
GraphQL: GraphQL은 데이터를 요청하는 방식에 있어 REST와 다른 접근 방식을 가지고 있습니다. REST는 각 엔드포인트가 고정된 데이터를 반환하는 반면, GraphQL은 클라이언트가 필요한 데이터를 직접 지정하여 가져오는 쿼리 언어입니다.
RPC (Remote Procedure Call): RPC는 원격 프로시저 호출을 위한 프로토콜로, 원격 서버에서 함수 또는 프로시저를 호출하여 데이터를 주고받는 방식입니다. RESTful API는 HTTP 메소드를 사용하여 리소스를 다루는 반면, RPC는 프로시저 호출에 초점을 둡니다.
Custom API: RESTful 아키텍처를 따르지 않고 독자적으로 설계된 API들이 있을 수 있습니다. 이러한 경우에는 RESTful API가 아닐 수 있습니다.
참고
https://bentist.tistory.com/37
https://ryusm.tistory.com/171
https://suzzeong.tistory.com/121
https://en.wikipedia.org/wiki/Clean_URL