RESTful API

tngusl5·2021년 7월 8일
0

RESTful API란?

API 시스템을 구현하기 위한 아케텍쳐 중에 가장 널리 사용되는 형식
HTTP method와 URI를 통해서 내가 원하는 Resource를 가져오는 방식

ex)
HTTP method - GET
URI - beverages/1
GET/beverages/1 = 음료들 중 1번 음료 정보를 요청

URI / HTTP Method / Payload

  • URI(Uniform Resource Identifier)
    -해당 사이트의 특정 자원의 위치를 나타내는 유일한 주소
    -https://OOOOO.naver.com/login
    -https://OOOOO.naver.com/news
  • HTTP Method
    -HTTP request가 의도하는 action을 정의한 것
  • Payload
    -HTTP request에서 server로 보내는 데이터(body)

REpresentational State Transfer

웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식.

REST 방식이 적용된 RESTful API
-삼성전자 주식 정보를 받기 위한 HTTP 요청
HTTP GET https://api.trueshort.com/stock/005930
-유저의 보유 주식 종목들을 DB에 저장하는 HTTP 요청
HTTP POST https://api.trueshort.com/users/portfolios

     {
	"user_id" : 1,
	"stocks" : [
		"005930",
		"298730",
		"378900"
	  ]
     }

RESTful API의 장점

Self-descriptiveness
그 자체 만으로도 명확하고 간단하게 설명이 가능

RESTful API 설계 규칙

  • URI 정보를 명확하게 표현해야 한다.

  • resource는 명사를 사용한다.
    ex) 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
    { } = path parameter

  • 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를 사용한다.)

끝!

profile
안녕하세요 :)

0개의 댓글