WIL #11 RESTful API

신승호·2021년 5월 13일
0

WIL

목록 보기
16/20

🤷 기간 : 2021.05.14 ~ 2021.05.14
🤷 자료 : https://www.notion.so/wecode/Django-C-R-U-D-2-98d0ec4c3de844338e769096aee13537
🤷 내용: RESTful API


RESTful API란?

  • API 시스템을 구현하기 위한 아키텍처 중에 가장 널리 사용되는 형식
    • Client들이 HTTP request를 보내고 response를 기다린다.
      • GET(=HTTP method) /users(=URI)
    • REST API에서 client가 보낸 HTTP request를 받고, 그 request가 원하는 걸 한다
      • 유저를 생성하는거 같은거
    • REST APIdatabaseREST API가 필요한 걸 문의하는거지

기본 배경 지식

URI(Uniform Resource Identifier)

HTTP Method

  • HTTP request가 의도하는 action을 정의한 것
    • POST, GET, DELETE, PUT

Payload

    • HTTP request에서 server로 보내는 데이터 (body)

Representational State Transfer

  • 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식.
    • 즉, 리소스(HTTP URI로 정의된)를 어떻게 한다(HTTP Method + Payload)를 구조적으로 깔끔하게 표현
  • REST 방식이 적용된 RESTful API
  • ex)

RESTful API의 장점

  • 여러 장점들이 있지만, 사실 그중 가장 명확한 장점은 바로 self-descriptiveness이다.
  • RESTful API는 그 자체만으로도 API의 목적이 쉽게 이해가 된다.
    • 예를들어,
      - HTTP GET https://api.trueshort.com/stock/005930
      request의 경우,
      - 문서나 주석이 없이도 "https://api.trueshort.com 라는 API에서 삼성전자 주식에 관한 정보를 HTTP 요청을 통해 받아오는 구나" 라는 해석이 쉽게 가능

RESTful API 설계 규칙

  • URI 정보명확하게 표현해야 한다.
    • resource명사 복수형를 사용한다.
      • Ex) GET /user/1—> GET /users/1
  • resource에 대한 행위HTTP Method(GET, POST, PUT, DELETE)로 표현한다.
    • URI에 HTTP Method가 포함되서는 안된다.
      • Ex)GET delete/user/1—>DELETE /users/1
    • URI에 동사가 포함되서는 안된다.
      • Ex)GET /user/show/1—> GET /users/1
      • Ex)POST insert/user/2—> POST /users/2
  • resource 사이에 연관 관계가 있는 경우
    • /리소스/고유ID/관계 있는 리소스
      • Ex)GET /users/{user_id}/profile
  • URI는 / 구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다.
    • Ex) GET users/portfolios
  • URI 마지막 문자로 /를 포함하지 않는다.
    • Ex) GET users/portfolios/ (X)
  • 불가피하게 URI가 길어지는 경우 -을 사용하여 가독성을 높인다.
    • • _는 사용하지 않는다.
  • URI 경로에는 대문자 사용을 피하도록 규정하고 있다.
  • 파일의 경우 payload의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다.
    • EX) GET user/1/profile-photo.jpg (X)
    • EX) GET user/1/profile-photo (이때, payload의 포맷은 headers에 accept를 사용한다.

path parameters

query parameters

path parameters vs quary parameters

RESTful 의 나쁜예

State Code

profile
신승홉니다

0개의 댓글

관련 채용 정보