개발지식 먹는 하마 님의 블로그
API 간략 정리 본문
API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말로
정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 인터페이스이다.피
- 필요한 정보만 공유할 수 있다.
- 데이터를 완전히 노출할 필요가 없다.
- 특정 요청과 관련된 작은 데이터 패킷을 공유할 수 있다.
애플리케이션에서 API 호출 전송
호출된 API는 유효한 요청을 받은 후 외부 소프트웨어 또는 웹서버를 호출
서버는 요청된 정보와 함께 API에 응답을 보냄
API는 데이터를 초기 요청 애플리케이션으로 전송함
[ 엔드포인트 ]
API 호출을 수신하는 디지털 위치
특정 기능(서비스)을 수행하는 URL 주소이다.
API 클라이언트는 특정 리소스에 도달하기 위한 엔드포인트 URL을 제공한다.
일반적으로 API 설명서에서 찾을 수 있다.
[ 웹 API ]
오늘날 대부분 사용되는 API
HTTP 프로토콜을 사용하여 인터넷을 통해 데이터 및 기능을 전송할 수 있도록 하는 데 사용된다.
웹 API 유형 4가지 | |
Public API | HTTP 프로토콜로 액세스할 수 있는 오픈 소스 애플리케이션 프로그래밍 인터페이스 API 엔드포인트와 요청 및 응답 형식을 정의함 |
Partner API | 개발자는 공용 API 개발자 포털을 통해 세프 서비스 모드로 파트너 API에 액세스한다. 온보딩 프로세스 완료, 로그인 자격 증명을 받아야 함 |
Private API | 비공개 API는 외부 사용자에게 숨겨진 상태로 유지됨 조직은 이를 사용하여 다양한 내부 개발 팀 간의 생산성과 커뮤니케이션을 개선함 |
복합 API | 여러 데이터 또는 서비스 API를 결합한다. 단일 호출로 여러 엔드포인트에 액세스할 수 있다. 단일 작업 실행 시, 여러 소스의 정보가 필요할 수 있는 마이크로 서비스 아키텍처에서 유용하다. |
[ 데이터 객체 ]
API를 통해 주고받는 데이터 객체에는 여러 종류가 있다.
대표적으로 사용되는 것은 JSON과 XML이다.
< JSON >
더보기
- 텍스트 기반의 경량 데이터 형식 : 가독성이 좋다.
- 키 - 값 쌍 구성
- 독립적인 언어 : 여러 언어에서 사용할 수 있다.
- 간결함 : 문법이 간단하고 가볍다.
const data = {
"키1" : "값1",
"키2" : ["값2", "값3"]
}
const jsonString = JSON.stringify(data); //객체 -> JSON 문자열
const jsonObject = JSON.parse(jsonString); //JSON 문자열 -> 객체
주로 fetch 메소드를 사용해 데이터를 주고 받는다.
fetch("https://example.com/api/users", {
method: "POST", // HTTP 메소드
headers: {
"Content-Type": "application/json" // JSON 형식임을 명시
},
body: JSON.stringify(data) // JSON 객체를 문자열로 변환
})
< XML >
더보기
- 마크업 언어
- 데이터 저장 및 전달에 중점
- 태그 기반 계층 구조
- 높은 확장성 : 사용자가 직접 태그 정의 가능
- HTML과 비슷한 형식
<?xml version="" encoding=""?> //xml 선언
<catalog>
<book id="bk101">
<author>J.K. Rowling</author>
<title>Harry Potter and the Sorcerer's Stone</title>
<genre>Fantasy</genre>
<price>29.99</price>
<publish_date>1997-06-26</publish_date>
</book>
</catalog>
'Web' 카테고리의 다른 글
DTO (Data Transfer Object) (0) | 2025.03.31 |
---|---|
웹 서비스 구조 및 흐름을 비유와 함께 이해하기 (0) | 2025.03.20 |
REST API와 RESTful API (0) | 2025.03.20 |
HTTP Message (0) | 2025.03.18 |
TCP와 UDP (0) | 2025.03.17 |