[TIL] API

hello__0·2025년 2월 18일
0

TIL

목록 보기
11/11

API(Application Programming Interface)

둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 인터페이스

인터페이스?
서로 다른 시스템 간의 통신을 돕는 중간 역할

API 작동방식

1️⃣ 클라이언트(웹, 모바일 앱)가 API를 호출
2️⃣ 서버(API 제공자)가 요청을 처리
3️⃣ 서버가 JSON 또는 XML 형식의 응답을 반환
4️⃣ 클라이언트가 응답 데이터를 활용하여 화면에 표시


API의 장점

장점설명
코드 재사용성같은 API를 여러 프로젝트에서 재사용 가능
개발 속도 향상기존 API를 활용하여 빠르게 기능 추가 가능
확장성다양한 플랫폼(웹, 모바일)에서 활용 가능
데이터 교환 용이서로 다른 시스템 간 데이터 연동 가능
유지보수 용이클라이언트-서버 분리로 독립적인 업데이트 가능
보안 강화OAuth, JWT 등으로 인증 보안 적용 가능
자동화 가능API를 활용하여 업무 자동화 가능

REST API의 특징

  • HTTP 프로토콜 사용 (GET, POST, PUT, DELETE)
  • JSON 형식의 데이터 교환 (XML도 가능)
  • 자원(Resource)를 엔드포인트로 제공 (/users, /products 등)

REST API를 사용해야 하는 이유

REST API는 웹 기반 시스템에서 데이터를 주고받는 표준적인 방식

이유설명
웹 친화적HTTP 표준을 사용하여 간편한 데이터 전송 가능
클라이언트-서버 분리프론트엔드와 백엔드가 독립적으로 개발 가능
데이터 경량화JSON을 사용하여 가볍고 빠른 데이터 교환 가능
확장성새로운 기능 추가 시 기존 API와 충돌 없이 확장 가능
보안 강화OAuth, JWT 등 다양한 인증 방식 적용 가능
캐싱 가능GET 요청을 캐싱하여 성능 최적화 가능

1. 클라이언트-서버 분리 (Separation of Concerns)
프론트엔드(React, Vue.js 등)와 백엔드(Java, Node.js 등)를 완전히 분리하여 개발 가능
서로 독립적으로 개발되므로 유지보수가 편리함

2. HTTP 프로토콜 기반 (웹 친화적)
HTTP 요청 메서드 (GET, POST, PUT, DELETE) 를 활용하여 CRUD 작업을 명확하게 수행 가능
REST API는 브라우저, 모바일 앱 등 어떤 클라이언트에서도 쉽게 호출 가능

3. JSON 형식으로 가볍고 빠른 데이터 교환
JSON은 텍스트 기반 데이터 형식으로 가볍고 읽기 쉬움
XML보다 전송 속도가 빠르고 파싱하기 쉬움
REST API는 JSON을 기본으로 사용하여 웹과 모바일 앱 개발에 적합

4. 확장성과 유연성 (Scalability)
RESTful 설계를 따르면 새로운 기능을 추가할 때도 기존 API를 변경하지 않고 확장 가능
예: /users API에 새로운 필드를 추가해도 기존 클라이언트는 문제없이 동작

5. 캐싱(Caching)을 활용한 성능 최적화
GET 요청은 캐싱이 가능하여 서버 부하를 줄이고 응답 속도를 개선 가능
예: 클라이언트가 동일한 데이터를 여러 번 요청해도, 캐시된 응답을 사용할 수 있음

6. 인증과 보안이 용이
REST API는 OAuth, JWT, API Key 등을 활용한 보안 인증을 쉽게 적용 가능
HTTPS를 사용하면 데이터를 암호화하여 보안성이 강화됨


RESTful과 REST API의 관계

REST API는 RESTful 원칙을 따르는 API를 의미

RESTful 하게 만든다는 것은?
REST의 원칙을 잘 준수하는 API를 의미

REST API vs RESTful의 차이

개념설명
REST (Representational State Transfer)웹에서 데이터를 주고받는 아키텍처 스타일
REST APIREST 원칙을 따르는 API
RESTfulREST 원칙을 잘 지키고 있는 상태

RESTful API의 핵심 원칙

원칙설명
1. 클라이언트-서버 분리클라이언트(프론트)와 서버(백엔드)를 분리
2. 무상태성 (Stateless)서버가 클라이언트 상태 정보를 저장하지 않음
3. 캐시 가능 (Cacheable)HTTP 캐싱을 활용하여 성능 최적화
4. 계층적 시스템 (Layered System)API가 여러 계층을 통해 요청을 처리할 수 있어야 함
5. 일관된 인터페이스 (Uniform Interface)RESTful API는 자원을 명확한 URL로 표현해야 함

RESTful하지 않은 API (잘못된 방식)

GET /getUserData?id=123  (❌ URL에 동사를 사용함)
POST /createUser  (❌ 동사 사용)
DELETE /deleteUser?id=123  (❌ 동사 사용)

RESTful API (올바른 방식)

GET /users/123   (✅ 특정 사용자 정보 조회)
POST /users      (✅ 새로운 사용자 추가)
PUT /users/123   (✅ 사용자 정보 수정)
DELETE /users/123  (✅ 사용자 삭제)
profile
자라나라 나무나무

0개의 댓글

관련 채용 정보