CS/WEB

[WEB] Restful API

빈둥벤둥 2021. 8. 9. 20:22

📝 Restful API


💻 REST(REpresentational State Transfer)

✔ HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식이다.

✔ Restful한 API가 되기 위해서는 REST의 특징을 갖추어야 한다.

 

 

🔧 REST의 특징

  • 일관된 인터페이스: URI로 지정한 리소스에 대한 조작 요청은 클라이언트의 플랫폼에 무관하며, 특정 언어에 종속받지 않는다.
  • 무상태성(Stateless): 이전 요청이 다음 요청과 연관되지 않는다.
  • 캐시: 캐싱 기능을 적용할 수 있다.
  • 자체 표현 구조: 요청 메시지만 보고도 이를 쉽게 이해할 수 있어야 한다. 
  • 클라이언트-서버 구조: REST서버는 API제공, 클라이언트는 자원 요청, 사용자 인증 이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조이다.
  • 계층형 구조: REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 한다.

 

 

💻 Restful API

 

🔧 RESTful API의 구성

  • 자원(Resource) - URI
  • 행위(Method) - HTTP METHOD
  • 표현(Representation Of Resource) - DATA

 

 

🔧 RESTful API의 규칙

  • URI는 명사를 사용한다.
  • 슬래시로 계층 관계를 표현한다.
  • URI의 마지막에는 슬래시를 붙이지 않는다.
  • URI는 소문자로만 구성한다.
  • 가독성이 떨어지는 경우 하이픈(-)을 사용한다.

 

 

🔧 Restful API의 장점

  • 원하는 타입으로 데이터를 주고 받을 수 있다.

 

 

🔧 Restful API의 단점

  • 사용할 수 있는 메소드가 4가지 밖에 없다.
  • HTTP 통신 모델에 대해서만 지원한다.

 

 

💻 HTTP 응답 상태 코드

✔ REST API는 URI만 잘 설계된 것이 아닌 그 리소스에 대한 응답을 잘 내어주어야 한다.

 

🔧 200번대

  • 200: 클라이언트의 요청을 정상적으로 수행했다.
  • 201: 클라이언트가 어떠한 리소스 생성을 요청하고, 해당 리소스가 성공적으로 생성되었다.(POST요청)
  • 202: 클라이언트의 요청은 정삭적이나, 서버가 아직 요청을 완료하지 못했다.

 

 

🔧 300번대

  • 302: 클라이언트가 요청한 리소스가 임시적으로 새로운 URL로 리다이렉트됐다.

 

 

🔧 400번대

  • 400: 클라이언트의 요청이 부적절한 경우이다.
  • 401: 인증되지 않은 클라이언트가 권한이 없어 작업을 진행할 수 없는 경우이다.
  • 403: 인증된 클라이언트가 권한이 없어 작업을 진행할 수 없는 경우이다.
  • 404: 클라이언트가 요청한 자원이 존재하지 않는다.
  • 405: 클라이언트가 요청한 리소스에서 사용 불가능한 Method(get, post, delete, put)를 이용한 경우이다.

 

 

🔧 500번대

  • 서버 오류로 인해 요청을 수행할 수 없다.

 

 

 

 

REFERENCE

https://mangkyu.tistory.com/46

https://meetup.toast.com/posts/92