REST API

sudyn·2023년 5월 4일

브라우저(웹)

목록 보기
3/8

REST API란?

REST는 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로서, HTTP 프로토콜을 의도에 맞게 디자인하도록 유도하고 있다.

즉, REST는 HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처고, REST API는 REST를 기반으로 서비스 API를 구현한 것을 의미한다.

Representational State Transfer
자원(리소스)의 표현으로 상태를 전달하는 것

REST API의 구성

  • 자원(Resource) : 자원, URI(end point)
  • 행위(Verb) : 자원에 대한 행위, HTTP Method
  • 표현(Representations) : 자원에 대한 행위의 구체적 내용, payload

URI로 자원을 표현하는 데에 집중하고,** 자원의 상태(행위)에 대한 정의는 HTTP METHOD** 로 하는 것이다.

GET/users/3/profile
👉 user 중 3번 아이디 갖고있는 사람 프로필을 줘!

REST API 표기 예시

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

  • URI는 명사를 사용하고 소문자로 작성한다
  • 명사는 복수형을 사용한다.
  • URI의 마지막에는 /를 포함하지 않는다.
http://example.com/posts     (O)
http://example.com/posts/    (X)
http://example.com/post      (X)
http://example.com/get-posts (X)
  • URI에는 _가 아닌 -을 사용한다.
http://example.com/post-list  (O)
http://example.com/post_list  (X)
--> URI에는 언더바가 아닌 하이픈을 사용한다.
  • URI에는 파일의 확장자를 표시하지 않는다.
http://example.com/post/assets/example  (O)
http://example.com/post/assets/example.png  (X)
--> ```

RestFul이란?

REST API의 까다로운 제약조건들을 만족시킨 통신 설계 상태이다.

RestFul 하지 못한 예시

  • CRUD의 기능을 모두 POST method로만 이용하는 경우
  • URI에 행위(method)에 대한 부분이 들어가는 경우(/classes/createPeople)
    : 행위에 대한 부분은 method로 표현되어야한다.

HTTP 메서드

요청의 종류를 서버에게 알려주기 위해서 사용한다.

주요 메서드(verb)

  • GET : 리소스 조회
  • POST : 리소스 생성
  • PUT : 리소스 전체 업데이트
  • PATCH : 리소스 부분 업데이트
  • DELETE : 리소스 삭제

기타 메서드

  • HEAD: (HTTP) 헤더 정보만 요청
  • OPTIONS : 웹서버에서 지원되는 메소드의 종류를 확인할 경우 사용
  • TRACE : 원격지 서버에 루프백 메시지 호출하기 위해 테스트용으로 사용
  • CONNECT: 동적으로 터널 모드를 교환, 프락시 기능을 요청시 사용

Path Variable vs Query Parameter

GET 메소드를 이용하여 데이터를 가져올 때 사용

Path Variable

/users/10

경로 자체에 변수(10)을 사용한 방법
⭐️ 언제? : 전체 데이터 또는 특정 하나의 데이터를 다룰때 사용
리소스를 식별하기 위해 사용됨

Query parameter

⭐️ 데이터를 정렬하거나 필터링할 경우 사용

/users?user_id=10

예시

/users
👉 전체 user리스트를 가져오므로 path Variable 사용

users?occupation=programer
👉 직업이 programer인 user를 가져오므로 Query parameter 사용

/users/123
👉id가 123인 user가져오므로 Path Variable 사용

Restful API가 아닌것

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

profile
개발계발하는 프론트엔드 개발자🍠

0개의 댓글