RESTful API란?

Doyeon·2023년 2월 7일
0
post-thumbnail

REST

REST란?

  • Representational State Transfer
  • 자원을 이름(URI)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것

REST의 구성요소

  • 자원(resource) : URI
    • 클라이언트는 URI를 이용해서 리소스를 지정하고, 해당 리소스 동작을 서버에 요청한다.
  • 행위(verb) : Http Method
    • GET, POST, PUT, PATCH, DELETE
  • 표현(representation)
    • 클라이언트가 리소스에 대한 요청을 하면, 서버가 적절한 응답을 보낸다.
    • 주로 JSON과 XML을 통해 데이터를 주고 받는다.

REST : URI 를 통해 리소스(자원)을 표시하고, HTTP Method를 통해 자원의 행위를 정하고, 그 결과를 받는다.


REST API

REST API란?

  • API(Application Programming Interface)
    • 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘
    • 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한 서비스 계약
  • REST API
    • REST 설계 규칙을 지켜서 서비스 API를 구현한 것

REST API 설계 규칙

  1. URI는 뷰 중심이 아닌, 정보의 자원을 표현한다.

    GET /main-page  (X)
    GET /products   (O)
    
    GET /product_review     (X)
    GET /porducts/1/reviews (O)
  2. 자원에 대한 행위는 HTTP Method로 표현한다. (GET, POST, PUT, DELET)
    URI에는 자원의 행위에 대한 표현이 들어가지 않는다.

    GET /find/users  (X)
    GET /users       (O)
    
    POST /save/users (X)
    POST users       (O)
  3. URI 마지막에 슬래시(/)를 사용하면 안된다.

    http://api.canvas.com/shapes/ (X)
    http://api.canvas.com/shpaes  (O)
  4. 슬래시(/)는 계층관계를 나타내는데 사용한다.

    http://api.canvas.com/shapes/polygons/quadrilaterals/squares
  5. URI의 가독성을 위해 하이픈(-)을 사용한다.
    불가피하게 긴 URI를 사용할 경우 하이픈(-)을 통해 가독성을 높여준다.

    http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post
  6. URI에 언더바(_)는 사용하지 않는다.
    언더바(_) 대신 하이픈(-)을 사용할 것.

  7. URI 경로에는 소문자가 적합하다.
    scheme, host componet를 제외하고 대소문자에 따라 각각 다른 리소스로 인식하기 때문에 불필요한 혼란이 생길 수 있다.

    1) http://api.example.com/my-folder/my-doc
    
    2) HTTP://API.EXAMPLE.COM/my-folder/my-doc 
    
    // 1번, 2번은 URI와 같은 것으로 인식
    
    3) http://api.example.com/My-Folder/my-doc
    
    // 3번은 다른 것으로 인식 -> 불필요한 혼란 발생
  8. URI에는 파일 확장자가 포함되지 않아야 한다.
    body의 포맷을 나타내는 것은 Content-Type header의 media-type을 사용한다.

  9. 객체명이 URI에 포함된다면 가급적 복수를 사용한다.


RESTful API

  • REST API의 설계 의도를 명확하게 지킨 API
  • URI만 보더라도 리소스를 명확하게 인식할 수 있도록 표현한 설계 방식
  • HTTP mehotd(GET, POST, PUT, DELETE)를 기능에 알맞게 사용하여 정의한 API

[참고]
(http) REST API와 RESTful API
[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog
RESTful 하다는게 뭐야?
7 Rules for REST API URI Design - DZone
API란 무엇인가요? - API 초보자를 위한 가이드 - AWS

profile
🔥

0개의 댓글