API
- 클라이언트와 서버가 요청과 응답을 주고 받을 수 있게 만든 체계
- 클라이언트에서 서버로 요청(Request)을 보내고, 서버에서 클라이언트로 응답(Response)을 전달
↓'API 게이트웨이 설명' 더보기↓
웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 할 수 있다.
클라이언트
웹에서 정보에 액세스하려는 사용자(API를 사용하는 사람, 소프트웨어 시스템 등)
ex. 개발자는 날씨 시스템에서 날씨 데이터에 액세스하는 프로그램 작성할 수 있으며,
사용자가 날씨 웹 사이트를 직접 방문할 때 브라우저에서 동일한 데이터에 액세스할 수 있음
리소스
리소스는 다양한 애플리케이션이 클라이언트에게 제공하는 정보(이미지, 동영상, 텍스트, 숫자 등 모든 유형의 데이터)
서버에서 클라이언트에 리소스를 제공하며, API를 사용하여 리소스를 공유(보안, 제어, 인증 유지)하면서 웹 서비스를 제공함
CRUD
- 데이터를 다룰 때 기준이 되는 요청
- Create / Read / Update / Delete
RESTful API(Representational State Transfer)
Background
초기 CRUD 별로 주소를 만들었으나, 주소가 너무 많아져서 관리하기 힘들어졌고(주소가 겹치는 문제 등..)
이전보다 주소의 개수를 줄여서 CRUD를 하나의 주소로 관리함
- Create : POST
- Read : GET
- Update : PUT(전체) / PATCH(일부)
- Delete : DELETE
요청을 보낼 때, 어떤 요청을 보냈는지 파악할 수 있는 메소드(Method)를 붙여 전송함.
**메소드(Method) : 수학의 '함수'와 같은 의미로 x 입력값(='변수', '파라미터(Parameter)')에 따라 y 결과가 나옴
↓'RESTful API 설명' 더보기↓
REST와 RESTful 정의
- REST는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
- API 개발자는 여러 아키텍처를 사용하여 API를 설계할 수 있으며, REST 아키텍처 스타일을 따르는 API를 REST API라고 함
- REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 함
REST 장점
1. REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있음
2. 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있음
RESTful 장점
확장성 : REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정 가능
유연성 : RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원하며, 서버 애플리케이션의 플랫폼 또는 기술 변경은 클라이언트 애플리케이션에 영향을 주지 않음
독립성 : 사용되는 기술과 독립적으로 API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있으며, 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경 가능
[참고]응답 상태 코드
모든 HTTP 응답 코드는 5개의 분류(클래스)로 구분되며, 응답 상태를 알 수 있음
상태코드 첫번째 숫자는 응답의 클래스를 정의함
- 100번대 : 조건부 응답
- 200번대 : 성공
- 300번대 : 리다이렉션 완료
- 400번대 : 요청 오류
- 500번대 : 서버 오류
SDK(Software Development Kit)
다른 소프트웨어의 기능이 필요할 때, SDK를 설치하여 애플리케이션 개발에 필요한 도구와 라이브러리를 제공받을 수 있음
Open API
각 플랫폼 서버에서 제공하는 다양한 기능을 일반 사람들이 쓸 수 있게 오픈
회사 입장에서 플랫폼을 대중화하는데 도움이 되며, 특정 횟수 이상 혹은 프리미엄 기능으로 수익 창출의 비즈니스 모델로 사용하기도 함.
JSON
요청을 보내거나 응답을 받을 때, 각 요청과 응답마다 형식을 통일
중괄호로 시작하며, 키(Key)와 값(Value)으로 이루어져 있음
키와 값은 콜론(:)으로 구분함
ex:
{
키1(Key): 값1(Value),
키2(Key): 값2(Value)
}
{
"id": "miit31",
"pw": "1234"
}
여러개의 정보를 불러와야 할때는 배열(Array)를 사용
JSON에서는 배열을 표시할 때 대괄호([)를 사용
ex:
{
키1(Key): 값1(Value),
키2(Key): 값2(Value),
키3(Key): [값3, 값4, 값5]
}
{
"category": "음료",
"sort": "desc",
"items": ["카페모카", "카페라떼", "아메리카노"]
}
클라이언트와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들은 JSON 형식으로 주고받는다.
'Dev' 카테고리의 다른 글
| 데이터베이스 (1) | 2024.03.23 |
|---|---|
| 웹과 애플리케이션 (3) | 2024.03.20 |
| 네트워크, 클라이언트, 서버 (1) | 2024.03.19 |
| 프로그래밍 언어와 운영체제(OS) (5) | 2024.03.17 |
| 서버의 종류 (5) | 2024.03.12 |