REST API 란?

ohbin Kwon·2022년 3월 16일
0

인터넷에 나와있는 설명이며, 쉽게생각해 http의 슈퍼셋이 REST라고 생각하면되는데 이 REST또한 http처럼하나의 규약이자 약속이다.

1. REST API의 탄생

REST 는 Representational State Transfer의 약자

http를 만든 사람이 웹 그러니까 http 설계의 우수성에 비해 제대로 사용되지 못함을 인지하고, 웹의 장점을 최대한 활용하다록 만든 아키텍쳐가 REST이다.

2. REST API의 구성

  • resource(자원) -uri
  • verb(행위) - http method
  • representation(표현)

3. REST의 특징

  1. uniform(유니폼 인터페이스) uri로 지정한 리소스에 대해서만 조작 통일되고 한정적인 인터페이스로 수행
  2. stateless rest는작업을 위한 상태정보 그러니까 세션, 쿠키 정보를 따로 저장하지 않는다. 그래서 api 서버는 단순한 요청만을 처리하면 된다.
  3. cacheable http 웹표준을 rest는 그대로 사용하기 때문에, 웹의 기존 인프라 활용이 가능함 그중에 하나가 캐싱기능. http 프로토콜 표준에서 사용하는 lastmodified태그나 e-tag를 이용해서 캐싱 구현 가능
  4. self-descriptiveness rest api 메시지만 보고도 이를 쉽게 이해할 수 있음(자체표현구조)
  5. client - server 구조 rest 서버는 api 제공, 클라이언트는 사용자 인증, 컨텍스트(세션, 로그인 정보) 등을 직접 관리하는 구조로 각각의 역할이 확실히 구분된다. 그래서 클라이언트와 서버에서 개발해야 할 내용이 명확해지고, 의존성이 줄어든다.
  6. 계층형 구조 rest 서버는 다중계층으로 구성될 수 있다. 로드벨런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 proxy, 게이트웨이 같은 네트워크 기반의 중간매체를 사용 가능하다.

4. Rest API 디자인 가이드

  • uri는 정보의 자원을 표현해야 한다.
  • 자원에 대한 행위는 HTTP method로 표현한다.
  1. uri는 정보의 자원을 표현해야 하지, 행위를 표현하면 안된다.

    Get /members/delete (x)
    DELETE /members/1 (o)

  2. 주의 사항

    1. 슬래시는 계층관계
    2. 마지막에는 / 사용하지 않는다.
    3. (하이픈)은 uri 가독성을 높이기위함
    4. _(밑줄)은 사용하지 않는다.
    5. uri 경로에는 소문자가 적합
    6. 확장자는 경로에 포함하지 않는다.
    7. 메시지 바디에 대한 포맷위한 확장자는 accept header에 적는다.
  3. 리소스 간의 관계 표현

    /리소스명/{리소스Id}/관계가 있는 다른 리소스명

    ex) get /users/{userId}/devices

  4. collection과 document

    • collection,document는 모두 리소스, uri에 표현됨

    • collection은 document의 집합, 객체들의 집합

    • collection은 복수로, document는 단수로 사용한다면 이해가 쉬움

      ex) /countries/korea/cities/seoul
      /sports/soccer/player/7

5. http 응답 코드

잘 설계된 REST API는 URI만 잘 설계된 것이 아닌 그 리소스에 대한 응답을 잘 내어주는 것까지 포함되어야 합니다. 정확한 응답의 상태코드만으로도 많은 정보를 전달할 수가 있음

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

재미있는글
Rest를써야할까? : http://haah.kr/2017/06/12/rest-the-big-lie/
rest vs http: https://www.inflearn.com/questions/126743

profile
개발 로그

0개의 댓글