백엔드/네트워크
[HTTP]REST API
삼삼고
2022. 10. 6. 19:07
❓REST란?
- REST Representational State Transfer의 약자로서 자원의 이름으로 구분하여 해당 자원의 상태를 교환하는 것을 의미한다.
- 서버와 클라이언트의 통신 방법 중 하나임
⚡REST특징
📌인터페이스 일관성(UNIFORM)
- 정보가 표준 형식으로 전송되기 위해 구성 요소 간 총함 인터페이스 제공
- HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능하게끔 설계
📌무상 태성(STATELESS)
- 요청 간에 클라이언트 정보가 서버에 저장되지 않음
- 서버의 각각의 요청을 완전히 별개의 것으로 인식하고 처리
📌캐시 가능(CACHEABLE)
- HTTPV프로토콜을 그대로 사용하기 때문에 HTTP의 특징인 캐싱 기능을 적용
- 대량의 요청을 효율적으로 처리하기 위해 사용
📌자체 표현 구조(SELF-DESCRIPTIVENESS)
- REST API는 자체가 굉장히 쉽기 때문에 API 메시지만 보고도 API를 이해할 수 있는 구조를 가지고 있음
- 메시지들이 직관적으로 이해가 가능한 구조이다.
📌CLIENT-SEVER구조
- 자원이 있는 쪽이 SEVER, 요청하는 쪽이 CLIENT 클라이언트와 서버가 독립적으로 분리되어 있어야 함
📌계층화(Layered System)
- 클라이언트는 서버의 구성과 상관없이 REST API 서버로 요청
- 서버는 다중 계층으로 구성될 수 있음
❓REST API란?
rest(Representational State Transfer)와 api(Application Programming Interface)의 합성어이다.
HTTP의 주요 저자 중 한 사람인 로이 필딩은 웹(HTTP) 설계의 우수성에 비해 제대로 사용되지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로 REST를 발표하게 되었다.
- HTTP 표준 프로토콜을 사용하는 모든 플랫폼에서 호환 가능
- 서버와 클라이언트의 역할을 명확하게 분리
- 일반적으로 REST아키텍처를 주현하는 웹 서비스를 RESTful 하다고 표현한다.
⚡ RES API특징
- REST 기반으로 시스템을 분산하여 확 상성과 재사용성을 높임
- HTPP표준을 따르고 있어 여러 프로그래밍 언어로 구현 가능
- 웹에서 사용되는 데이터나 자원을 HTTP URL로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
📊REST API 성숙도 모델
엄밀하게 3단계까지 지키기는 어렵기 때문에 2단계까지만 적용해도 좋은 디자인이라고 할 수 있다.
🔨REST 성숙도 모델 - 0단계
- 단순히 HTTP 프로토콜을 사용하기만 해도 가능
- REST API를 작성하기 위한 기본 단계
Request
POST /api/student
{
"function": "getStudent",
"arguments" [
"1"
]
}
Response
HTTP/1.1 200 OK
{
"result" {
"id": "1"
"name": "sangbin",
}
}
CRUD
CREATE : POST /api/student
READ : POST /api/student
UPDATE : POST /api/student
DELETE : POST /api/student
🪓REST 성숙도 모델 - 1단계
- 요청받은 자원에 대한 정보를 응답으로 전달하는 것이 핵심이다.
- 모든 자원을 개별 리소스와 맞는 ENDPOINT를 사용해야 한다.
- 리소스에 대한 정보와 리소스 사용에 대한 성공/실패 여부를 반환해야 한다.
Request
POST /api/student/create
{
"name': "sangbin"
}
Response
HTTP/1.1 200 OK
{
"result" : "이미 있습니다."
}
CRUD
CREATE : POST /api/student/create
READ : POST /api/student/1
UPDATE : POST /api/student/update
DELETE : POST /api/student/remove/1
⛏REST 성숙도 모델 - 2단계
- CRUD에 맞게 적절한 HTTP메서드를 사용하는 것이다.
- 2단계까지 정용한 하면 대체적으로 잘 작성된 API임
[메서드 사용 규칙]
➡GET : 서버의 데이터를 변화시키지 않는 요청에 사용
➡POST : 요청마다 같은 리소스를 생성
➡PUT : 요청마다 같은 리소스를 반환, 교제의 역할
➡PATCH : 수정의 용도
Request
PUT /api/student/create
{
"name': "sangbin"
}
Response
HTTP/1.1 201 Created
Content-Type: application/json
{
"result" {
"id": "1",
"name": "sangbin"
}
}
CRUD
CREATE : POST /api/student
READ : GET /api/student/1
UPDATE : PUT /api/student/1
DELETE : DELETE /api/student/1
🔑RESET 성숙도 모델 - 3단계
- HATEOAS(Hypertext As The Engine Of Application State)라는 약어로 표현되며 하이퍼 미디어 컨트롤을 적용합니다.
- 링크를 넣어 새로운 기능에 접근할 수 있다.
Request
GET /api/student/1
Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"result" {
"id": "1",
"name": "sangbin",
"nextActions": {
"/api/users/{studentId}/roles",
}
}
}
❗설계 규칙❗
1. URI에는 소문자 사용
2. Resourcedml의 이름이나 uri가 길어질 경우 하이픈(-)을 통해 가독성을 높일 수 있음
3. 언더바(_)는 사용하지 않음
4. 파일 확장자를 표현하지 않음
🔓Open API(공개 API)
개발자 라면 누구나 사용할 수 있도록 공개된 API를 말한다.
공공데이터
도로명 주소 조회 서비스, 동네 예보 정보 서비스 등 대한민국 정부에서 OPEN API로 운영 및 제공하는 데이터
주의 사항
- API마다 정해진 이용수칙이 있고 그 이용수칙에 따라 제한 사항이 있다
- 무제한으로 이용할 수 있다는 의미는 아님
공개 API는 API KEY를 통해서 데이터를 불러올 수도 있음
API Key
- API Key는 서버의 문을 여는 열쇠입니다.
- API 키는 호출하는 프로젝트, 즉 API를 호출하는 앱이나 사이트를 식별합니다.
자원의 접근할 수 있는 권한이 바로 API Key이다.
더 자세히 공부해 보고 싶다면 아래 사이트를 참고해주세요
https://cloud.google.com/docs/authentication/api-keys?hl=ko
API 키를 사용하여 인증 | Google Cloud
의견 보내기 API 키를 사용하여 인증 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 페이지에서는 API 키를 사용하여 Google Cloud API 및 서비스를 인증하는
cloud.google.com
728x90
반응형