REST (Representational State Transfer) API (Application Programming Interface)
: REST 아키텍처 스타일의 설계 원칙을 준수하는 API
API란?
클라이언트(어플리케이션)가 다른 서버(어플리케이션이나 서비스) 내의 리소스에 액세스 할 수 있도록 하는 매커니즘
다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
클라이언트 (Client)?
웹에서 정보에 엑세스하려는 사용자(어플리케이션)
서버 (Server)?
자원을 포함하는 어플리케이션 또는 서비스
리소스(Resource)?
다양한 어플리케이션이 클라이언트에게 제공하는 정보
REST 아키텍처 설계원칙
- 균일한 인터페이스 : 동일한 리소스에 대한 모든 API 요청은 동일하게 표시되어야 함
- 클라이언트-서버 분리 : 클라이언트와 서버 어플리케이션은 서로 완전히 독립적이어야 함
- 무상태 : 각 요청에는 처리에 필요한 모든 정보가 포함되어야 하며, 서버는 클라이언트의 데이터를 따로 저장하지 않음
- 캐시 가능성 : 클라이언트나 서버 측에서 리소스를 캐시할 수 있어야 함
- 계층화된 시스템 : 호출과 응답이 서로 다른 계층을 거침
- 코드 온디맨드 (선택사항) : REST API 응답에 실행코드가 포함될 경우, 서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장할 수 있음
작동방식
RETS API는 HTTP 요청을 통해 통신하여 CRUD(create, read, update, delete) 기능을 수행함
Method | 역할 |
GET | 리소스 검색 |
POST | 리코드 생성 |
PUT | 리코드 업데이트 |
DELETE | 리코드 삭제 |
정보는 JSON(JavaScript Object Notation), HTML, XLT, Python, PHP, 텍스트를 포함한 거의 모든 형식으로 클라이언트에 전달될 수 있다
RESTful API 클라이언트 요청
- 자원 (Resource) : URI
- 행위 (Verb) : HTTP Method (Get, Post, Put, Delete)
ex) tosspayments POST 요청
curl -v --request POST \
--url https://api.tosspayments.com/v1/payments/confirm \
--header 'Authorization: Basic dGVzdF9za19hQlg3emsyeWQ4eW9Yd29KMGdxVng5UE9McUtROg==' \
--header 'Content-Type: application/json' \
--data '{"paymentKey":"5zJ4xY7m0kODnyRpQWGrN2xqGlNvLrKwv1M9ENjbeoPaZdL6","orderId":"a4CWyWY5m89PNh7xJwhk1","amount":15000}'
RESTful API 서버 응답
- 상태 표시줄
200 : 일반 성공 응답
201 : POST 메서드 성공 응답
400 : 서버가 처리할 수 없는 잘못된 요청
404 : 리소스를 찾을 수 없음
- 메시지 본문
XLM, JSON
ex) {"name":"spectrum", "age":"28"}
- 헤더
헤더, 메타데이터
ex) tosspayments API 응답
< HTTP/2 404
< date: Tue, 09 May 2023 02:13:44 GMT
< content-type: application/json
< content-length: 85
< vary: Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Origin,Access-Control-Request-Method,Access-Control-Request-Headers
< access-control-allow-credentials: true
< access-control-allow-methods: POST, GET, OPTIONS, DELETE
< access-control-max-age: 3600
< access-control-allow-headers: Origin, Content-Type, Accept, X-Requested-With, Key, Authorization, Referer-Policy, x-secure-keyboard-id, x-secure-keyboard-fields, sentry-trace, x-tosspayments-device-id, x-tosspayments-session-id, x-publickey-id, tosspayments-test-code, tosspayments-mid, idempotency-key
< referrer-policy: no-referrer-when-downgrade
< x-tosspayments-trace-id: 562e7f63de4da484940242680b47f25a
< x-content-type-options: nosniff
< x-xss-protection: 1; mode=block
< cache-control: no-cache, no-store, max-age=0, must-revalidate
< pragma: no-cache
< expires: 0
< strict-transport-security: max-age=31536000
< server: tc
< x-envoy-upstream-service-time: 62
<
* Connection #0 to host api.tosspayments.com left intact
{"code":"NOT_FOUND_PAYMENT","message":"존재하지 않는 결제 정보 입니다."}%
참고자료
https://www.ibm.com/kr-ko/topics/rest-apis
REST API란 무엇인가요? | IBM
REST API는 REST(Representational State Transfer) 아키텍처 스타일의 설계 원칙을 준수하는 API(애플리케이션 프로그래밍 인터페이스)입니다.
www.ibm.com
https://aws.amazon.com/ko/what-is/restful-api/
RESTful API란 무엇인가요? - RESTful API 설명 - AWS
Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애
aws.amazon.com
'개발기록' 카테고리의 다른 글
Node.js 노드 시작하기 (노드란?) (2) | 2023.10.29 |
---|
댓글