🗣️ 주절주절
급하게 PoC를 하게 되어서 선임님이 API를 OpenAPI로 제공해주겠다고 하셨다!
예전에는 GraphQL로 개발하다가 이번에는 REST API 기반으로 진행하게 됐는데
나는 그동안 Open API = Swagger 라고 막연히 알고 있었다...
선임님이 옆에서 그거 다른 거임..! 하시면서 개념 주입 레쭈고
REST/HTTP API를 어떻게 문서로 표현할지 정의한 표준 명세쉽게 말하자면..
다른 사람들이나 프로그램이 내 서비스의 API를 정해진 규칙과 형식으로 정확하게 이해하고 사용할 수 있도록 API 구조를 문서(YAML/JSON)로 표준화한 것
예를 들어
/users/{id} 엔드포인트가이런 것들을 YAML 또는 JSON 문서로 선언
paths:
/users/{id}:
get:
summary: Get user
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
이 기능을 쓰려면 이 주소로, 이 파라미터를 이런 타입으로 보내면, 이런 형태의 결과가 온다!
같은 호출 규칙 + 데이터 규격
즉 REST API는 HTTP라는 통신 방법 위에서 동작하는 API 형태이고,
OpenAPI는 그 REST API를 표준 형식으로 설명하는 명세다
ex) HTTP, gRPC, Socket
그래서 HTTP API도 넓게 보면 IPC의 한 형태인 것!
서비스 A 프로세스 ↔ 서비스 B 프로세스가 HTTP로 요청/응답하면 그것도 결국 프로세스 간 통신
설명하면서 추가로 나온 개념..!
API 계약을 어떻게 만들고 유지하느냐 에 대한 접근 방식
ex) Spring + Swagger Annotation, FastAPI
ex) OpenAPI → Server Stub, TypeScript Client SDK 생성