본문 바로가기

웹개발

API

API(Application Programming Interface)

• 프로그램(애플리케이션)끼리 서로 기능을 요청하고 결과를 전달하기 위한 인터페이스이다.

• 스마트폰 앱, 웹 브라우저, 백엔드 서버 등 다양한 소프트웨어는 API를 통해 서로 통신한다.

• API는 소프트웨어를 위한 소통 창구라고 볼 수 있다.

• 내부 구현을 알지 못해도 정해진 방법으로 기능을 사용할 수 있게 해준다.

• 단순히 동작하는 것을 넘어 사용하기 쉽고 이해하기 쉽게 설계하는 것이 중요하다.


REST API(Representational State Transfer)

• 서버의 자원(Resource)을 URI로 표현하고 HTTP Method를 활용하여 상태를 관리하는 설계 방식이다.

• REST는 서버가 관리하는 자원(Resource)의 상태를 표현하고 전달하는 방식이다.

  > 등록되었는가?

  > 수정되었는가?

  > 삭제되었는가?

  와 같은 자원의 상태를 클라이언트에게 전달한다.

• 클라이언트는 서버에게 자원의 상태를 요청하고, 서버는 해당 상태를 응답한다.

 

  • REST API의 주요 HTTP Method

    > GET : 조회(Read)

    > POST : 등록(Create)

    > PUT : 전체 수정(Update)

    > PATCH : 부분 수정(Update)

    > DELETE : 삭제(Delete)


REST의 6가지 원칙

• 균일한 인터페이스(Uniform Interface)

• 클라이언트-서버(Client-Server)

• 무상태성(Stateless)

• 캐시 가능(Cacheable)

• 계층형 시스템(Layered System)

• 주문형 코드(Code On Demand)

• REST는 좋은 API를 설계하기 위한 권장 원칙이며 반드시 모두 지켜야 하는 규칙은 아니다.


API 설계

• API 설계는 일관성과 예측 가능성을 위해 API를 정의하는 과정이다.

• 클라이언트와 서버가 어떤 방식으로 데이터를 주고받을지 결정한다.

• API 설계 결과를 문서로 정리한 것을 API 명세서(API Specification)라고 한다.

• API 명세서는 요청(Request), 응답(Response), URL, HTTP Method 등을 정의한 문서이다.


API 도출 과정

1. 누가 사용하는가? (WHO)

• API를 사용할 사용자를 정의한다.

  > 웹 브라우저

  > 모바일 앱

  > 관리자 페이지


2. 무엇을 다룰 것인가? (WHAT)

• 어떤 자원(Resource)을 관리할지 정의한다.

  > 회원

  > 게시글

  > 맛집

  > 댓글


3. 어떻게 처리할 것인가? (HOW)

• 어떤 기능을 제공할지 정의한다.

  > 등록

  > 조회

  > 수정

  > 삭제


4. 무엇이 필요한가? (Parameters)

• 기능 수행에 필요한 데이터를 정의한다.

  > 맛집 이름

  > 주소

  > 메뉴

  > 가격


5. 무엇을 반환할 것인가? (Returns)

• 작업 완료 후 클라이언트에게 전달할 데이터를 정의한다.

  > 성공 여부

  > 생성된 ID

  > 조회 결과

  > 오류 메시지


API 명세서 예시

맛집 등록 API

Request

Method : POST
URL : /restaurants
Content-Type : application/json
Body

{
"name": "명동교자",
"category": "한식",
"address": "서울 중구 명동10길 29"
}
Response

Status Code : 201 Created
Body

{
"id": 1,
"name": "명동교자",
"message": "맛집 등록 완료"
}

 

• 클라이언트가 맛집 정보를 서버에 전달하면 서버는 데이터를 저장한 뒤 생성된 맛집 ID와 결과 메시지를 반환한다.

'웹개발' 카테고리의 다른 글

Git과 GitHub 사용해보기(1)  (0) 2026.06.02
API 분석하고 설계해보기  (0) 2026.05.29
HTTP  (0) 2026.05.28
Server  (0) 2026.05.28
JavaScript  (0) 2026.05.28