일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Backend
- ConfigMap
- Python
- Terraform state
- SSL 인증서
- ReplicaSet
- AWS
- ansible
- Amazon Route 53
- Industry Week 2023
- docker
- Amazon RDS
- Kubernetis
- k8s
- Amazon DynamoDB
- Cognito
- Terraform
- DevOps
- Amazon VPC
- deployment
- CI CD
- classmethod
- mariaDB
- staticmethod
- taint
- AWS EC2
- Amazon GuardDuty
- Heartbleed
- DaemonSet
- AWS Security Hub
- Today
- Total
Nubes et Stella
API(Application Programming Interface) 본문
01. API란?
프로그램과 프로그램이 서로 통신하기 위해서는, 사전에 서로 약속된 규칙이 필요하다. 때문에 프로그래밍을 할 때에는 외부 프로그램과의 연동을 생각해서 이러한 규칙을 사전에 정의해야 하는데 이러한 규칙들을 API라고 생각하면 될 것 같다.
요약하자면 API는 소스 코드 수준에서 정의되는 인터페이스라고 할 수 있다.
예를 들어 내가(Client) 스마트폰으로 카카오에 특정 request를 보내면 해당 request를 인식하여 그에 맞는 response를 카카오에서 보내줘야 한다. 이 때 카카오는 특정 request에 맞는 response를 보내줘야 하는데 이를 위한 규칙이 API이다.
여러 공공기관, 기업에서는 개발자들을 위한 API를 공개하고 있다.
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
02. RESTful API
RESTful API를 이해하기 위해서는 우선 "REST"에 대해서 알아볼 필요가 있다. RESTful API는 이 REST를 준수하는 API라고 이해하면 될 것 같다. 때문에 이 항목에서는 REST의 개념에 대해서 주로 다루고자 한다.
REST(Representational State Transfer)는 로이 필딩(Roy Fielding)이 자신의 2000년 박사 학위 논문에 정의한 네트워크 소프트웨어 아키텍처다. 쉽게 말하면 '네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침' 정도로 볼 수 있다.
REST의 대표적인 주요 특징은 아래와 같다. (feat, ChatGPT)
- 자원 (Resources) : 모든 자원은 고유한 식별자(URI)를 가지며, 클라이언트는 이를 통해 자원에 접근합니다. 자원은 서버에서 관리되며, 텍스트, 이미지, 데이터베이스 레코드 등 모든 것이 자원이 될 수 있습니다.
- 표현 (Representations): 자원의 표현은 다양한 형태로 이루어질 수 있습니다. JSON, XML, HTML 등 다양한 포맷으로 자원의 상태를 나타낼 수 있습니다.
- 메서드 (Methods): HTTP 메서드를 사용하여 자원에 대한 동작을 정의합니다. 주요 메서드로는 GET, POST, PUT, DELETE 등이 있으며, 각각 데이터 조회, 생성, 수정, 삭제와 연결됩니다.
- 상태 전송 (State Transfer): 클라이언트와 서버 간의 통신은 상태를 전송하면서 이루어집니다. 서버의 응답은 해당 자원의 상태를 나타내어야 합니다.
- 무상태성 (Statelessness): 서버는 클라이언트의 상태를 관리하지 않습니다. 각 요청은 독립적이며, 클라이언트의 상태 정보는 클라이언트 측에서 유지됩니다. 이는 확장성을 향상시키는데 도움이 됩니다.
- 캐싱 (Caching): 서버 응답은 캐시될 수 있으며, 클라이언트는 이를 활용하여 데이터 전송량을 줄이고 성능을 향상시킬 수 있습니다.
'Knowledge > Dev(Ops)' 카테고리의 다른 글
CI / CD (0) | 2023.10.22 |
---|---|
애자일 방법론(Agile methodology) (0) | 2023.10.12 |
매개변수(Parameter)와 인자(Argument) (0) | 2023.08.21 |
웹훅(Webhook) (0) | 2023.08.19 |