OpenAPI
REST API の仕様を YAML/JSON で記述する標準フォーマットで、ドキュメント生成やコード生成に活用される
APIドキュメント
OpenAPI とは
OpenAPI (旧 Swagger) は、REST API の仕様を YAML または JSON で記述する標準フォーマットである。OpenAPI Initiative (Linux Foundation) が管理しており、現行バージョンは OpenAPI 3.1。API のエンドポイント、リクエスト/レスポンスの構造、認証方式を機械可読な形式で定義する。
基本的な仕様書
openapi: 3.1.0
info:
title: Order API
version: 1.0.0
paths:
/orders:
post:
summary: 注文を作成
operationId: createOrder
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [userId, items]
properties:
userId: { type: string }
items:
type: array
items: { $ref: '#/components/schemas/OrderItem' }
responses:
'201':
description: 注文が作成された
content:
application/json:
schema: { $ref: '#/components/schemas/Order' }
'400':
description: バリデーションエラー
OpenAPI から生成できるもの
| 生成物 | ツール |
|---|---|
| 対話的ドキュメント | Swagger UI, Redoc |
| TypeScript の型定義 | openapi-typescript |
| API クライアント | openapi-generator, orval |
| サーバースタブ | openapi-generator |
| バリデーション | openapi-response-validator |
| モックサーバー | Prism |
スキーマファースト vs コードファースト
| アプローチ | 流れ | メリット |
|---|---|---|
| スキーマファースト | OpenAPI 仕様書 → コード生成 | フロントエンドとバックエンドが並行開発 |
| コードファースト | コード → OpenAPI 仕様書を自動生成 | 実装が先、素早く開発 |
API ファーストデザインではスキーマファーストが推奨される。
API Gateway での活用
API Gateway は OpenAPI 仕様書をインポートして API を作成できる。
TypeScript の型生成
npx openapi-typescript openapi.yaml -o src/api-types.ts
import type { paths } from './api-types';
type CreateOrderBody = paths['/orders']['post']['requestBody']['content']['application/json'];
type OrderResponse = paths['/orders']['post']['responses']['201']['content']['application/json'];
OpenAPI 仕様書から TypeScript の型を自動生成し、API クライアントの型安全性を保証する。
現場での応用を知るには関連書籍も役立つ。