RESTful API란?

이선호·2021년 10월 17일
0

대표적인 API 시스템을 구현하기 위한 아키텍처
Graphql, SOAP, GRPC, REST,....등이 있다.

그중에서 REST는??
Representational State Transfer의 줄임말로 애플리케이션 개발의 아키텍처 중 하나이다.

✔️ 아키텍처 : 애플리케이션을 설계, 제작하는데 사용하는 패턴과 기술의 총칭

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

⭐️    리소스(HTTP url로 정의된)를 어떻게 한다를
HTTP Method + Payload형식으로 구조적으로 깔끔하게 표현!!

✔️ 기본 배경 지식 URI/HTTP Method/Payload

  • URI
    해당 사이트의 특정 자원의 위치를 나타내는 유일한 주소
  • HTTP Method
    HTTP request가 의도하는 action을 정의한 것
  • Payload
    HTTP request에서 server로 보내는 데이터 (body에 담아 보내는 데이터 )

RESTful API란?

API 시스템을 구현하기 위한 아키텍처 중에 가장 널리 사용되는 형식이다.

Q. 왜 REST API가 많이 사용되는가?

  • 다른 시스템에 비해 진입장벽이 낮다.
  • 데이터 메세지 포멧도 효율적이다.
  • 메세지 작성과 통신이 가능하다.
  • 프로세싱이 덜 필요하다. 즉, 시스템이 구현되고 웹 개발 통신이 진행될때 조금 더 빠른 통신이 가능하다.

Q. RESTful API의 장점 & 단점

📍 장점
self-descriptivensess, URI만 보더라도 API의 목적이 쉽게 이해 된다.
ex) GET/users, POST/product/1
📍 단점
정해진 표준 규약이 없어 안티패턴으로 작성되는 경우가 흔하다.


RESTful API 설계 규칙

  • URI 정보를 명확하게 표현해야 한다. ( resource는 명사를 사용한다. )
  • resource에 대한 행위는 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.
    Ex) GET delete/user/1 -> DELETE /users/1
  • resource끼리 연관이 되어있는 경우: /리소스/고유ID/관계 리소스
    Ex) GET/users/{user_id}/profile
  • 파일의 경우 파일 확장자를 URI에 포함하지 않는다.
    Ex) GET users/1/profile-photo.jpg ❌
  • URI는 / 구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다.
  • URI 마지막 문자로 /를 포함하지 않는다.
  • 불가피하게 URI가 길어지는 경우 -을 사용하여 가독성을 높인다.
  • 언더바_는 사용하지 않는다.
  • URI 경로에는 대문자 사용을 피하도록 규정하고 있다.

Path Parameter

GET http://10.58.4.1:8000/products

{
  "results": [
    {
      "id": 1,
      "name": "무농약 깐 생강"
      "price: "3000원"
    }, 
    {
      "id": 2,
      "name": "새우깡"
      "price: "1000원"
    }, 
    {
      "id": 3,
      "name": "사과"
      "price: "3000원"
    }, 
  ]
}

GET http://10.58.4.1:8000/products/1

{
  "results": [
    {
      "id": 1,
      "name": "무농약 깐 생강"
      "price: "3000원"
    }, 
  ]
}

Query Parameter

GET /products?price=3000원

{
  "results": [
    {
      "id": 1,
      "name": "무농약 깐 생강"
      "price: "3000원"
    }, 
    {
      "id": 2,
      "name": "새우깡"
      "price: "1000원"
    }, 
    {
      "id": 3,
      "name": "사과"
      "price: "3000원"
    }, 
  ]
}

GET /products?price=3000원&name=id

{
  "results": [
    {
      "id": 1,
      "name": "무농약 깐 생강"
      "price: "3000원"
    }, 
  ]
}

Q. Path Parameter 와 Query Parameter 언제 무엇을 사용해야되는가?


다양한 기능과 필터링과 솔팅과 서칭을 할때 query parameter를 사용하고
그렇지 않을 경우 path parameter를 사용

0개의 댓글

관련 채용 정보