대표적인 API 시스템을 구현하기 위한 아키텍처
Graphql, SOAP, GRPC, REST,....등이 있다.
그중에서 REST는??
Representational State Transfer의 줄임말로 애플리케이션 개발의 아키텍처 중 하나이다.
✔️ 아키텍처 : 애플리케이션을 설계, 제작하는데 사용하는 패턴과 기술의 총칭
웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식.
⭐️ 리소스(HTTP url로 정의된)를 어떻게 한다를
HTTP Method + Payload
형식으로 구조적으로 깔끔하게 표현!!
✔️ 기본 배경 지식 URI/HTTP Method/Payload
API 시스템을 구현하기 위한 아키텍처 중에 가장 널리 사용되는 형식이다.
Q. 왜 REST API가 많이 사용되는가?
- 다른 시스템에 비해 진입장벽이 낮다.
- 데이터 메세지 포멧도 효율적이다.
- 메세지 작성과 통신이 가능하다.
- 프로세싱이 덜 필요하다. 즉, 시스템이 구현되고 웹 개발 통신이 진행될때 조금 더 빠른 통신이 가능하다.
Q. RESTful API의 장점 & 단점
📍 장점
self-descriptivensess, URI만 보더라도 API의 목적이 쉽게 이해 된다.
ex)GET/users
,POST/product/1
📍 단점
정해진 표준 규약이 없어 안티패턴으로 작성되는 경우가 흔하다.
Ex) GET delete/user/1 -> DELETE /users/1
Ex) GET/users/{user_id}/profile
Ex) GET users/1/profile-photo.jpg ❌
/
구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다./
를 포함하지 않는다.-
을 사용하여 가독성을 높인다._
는 사용하지 않는다.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원"
},
]
}
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를 사용