RESTful API

프최's log·2020년 9월 27일
0

study

목록 보기
19/59

RESTful API

 REST 는 Representational State Transfer의 약자로, 웹서비스를 만드는데 사용되는 제약(Constraint) 모음이다. 까다로운 조건들을 다 만족해서 만들면 'RESTful' 하다라고 한다. 이 개념은 Roy Fielding이라는 사람이 "Web을 망가뜨리지않고 어떻게 HTTP를 개선할 수 있을까?" 를 질문을 가지고 연구를 시작하여 만들어지게 되었다.
API 디자인에 있어서 HTTP 프로토콜을 의도에 맞게 사용하도록 정의된 아키텍쳐 스타일이다. REST API의 설계 시, 가장 중요한 항목은 아래 2가지와 같다.

  • URI는 정보의 자원을 표현해야한다.
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현해야한다,

REST 구성

  • 자원(Resource) : URI
    REST에서 정보의 가장 핵심적인 추상화는 리소스이다. 이름 붙일 수 있는 정보면 어떤 것이든 리로스가 될 수 있다
  • 행위(Verb) : HTTP Method
  • 표현(Representations)

REST아키텍처의 6가지 제한조건(Constraints)

  • Client-Server

  • Stateless

  • Caheable

  • Uniform interface : 같은 스타일의 API, 동일한 인터페이스

  • Layered system : 서버나 DB를 알지 못하더라도 api를 쓸 수 있어야하는 시스템

  • Code on demand

REST : Uniform Interface 4가지 조건

  • 자원 식별(Identification of resources)
  • 메세지 표현(요청)를 통한 리소스 조작(manipulation of resources through representation)
  • 자기 서술적 메세지(self-descriptive messages)
  • Hypermedia As The Engine Of Application State(HATEOAS) : 다음 자원을 이어나가야할 링크가 존재해야한다. 애플리케이션 상태에 대한 엔진으로서 하이퍼미디어

리소스 네이밍 : 리소스를 나타내는데 중요한 것

  • API 사용자가 API에 익숙해지고 나면, 다른 요청도 쉽게 만들 수 있어야 한다,

    • 리소스를 나타내는데 명사(nouns) 사용
      • document
      • collection
      • store
      • controller
    • 일관성이 핵심
      • 계층구조를 나타낼 때 '/' 사용
      • URI 끝에 / 를 붙이지 말 것
      • URI 가독성을 위해 '-'를 사용
      • 언더바( '_' ) 사용 금지
      • URI에 소문자 사용
      • 파일 확장자 사용 금지
    • filter가 필요하면 query component 사용
      managed-devices?region=USA
      managed-devices?region=USA&brand=XYZ
    • CRUD 기능 이름은 URI에 사용금지
      • CRUD = POST, GET, PUT, DELETE
VerbsEndpointAction
GET/api/users모든 사용자 조회
POST/api/users새 사용자 리스트 추가
PUT/api/users/{username}특정 사용자의 정보 갱신
DELETE/api/users/{username}특정 사용자의 정보 삭제
GET/api/users/{username}특정 사용자 정보 조회}

추가자료 : 그런 REST API로 괜찮은가 : Naever DEVIEW 2017 - Youtube

참조사이트
REST - Wikipedia
REST API 제대로 알고 사용하기
Roy Fielding 박사학위논문

profile
차곡차곡 쌓아가는 나의 개발 기록

0개의 댓글