OpenAPI とは?
https://swagger.io/docs/specification/about/
OpenAPIとは、RESTful APIのAPI記述フォーマットです。 OpenAPI には以下の内容が記載されます。
- APIのエンドポイント
- APIのインプットとアウトプット
- 認証
- コンタクト情報やライセンス、利用規約など
OpenAPI のメリット
- API仕様書を記述することで、APIの設計を明確化し、開発の漏れや誤りを防ぐことができる。
- 開発工数の削減
- APIドキュメントを自動生成できるため、ユーザー向けのマニュアル作成が容易
- APIの理解促進
Swagger とは?
OpenAPI を使用するための便利なツール。 以下のような様々なサービスが提供されている。
名前 | 概要 |
---|---|
Swagger Editor | ブラウザ上でAPI仕様書を書くためのエディタ |
Swagger UI | API仕様書からドキュメントを生成するツール |
他にもたくさんあるが代表的な2つのサービスについて紹介。
Swagger Editor
ローカル
https://github.com/swagger-api/swagger-ui/blob/master/docs/development/setting-up.md#steps
オンライン
オンライン上にエディターが用意されている https://swagger.io/tools/swagger-editor/
VSCode
VSCode のプラグインにもSwagger Editorがある
Swagger UI
Swagger UI は、API定義書をUIととして表示するためのツール。 YamlやJSONで作成したAPI定義書をSwagger UIにコピペするだけで、APIのドキュメントがUIとして表示される。Swagger UI上で直接、テストすることも可能。
🌍 Swaggerを使ってみよう
以下のYAMLは、Swaggerを使用して記述されたサンプルAPI仕様です。これをもとに、APIの動作をSwagger UIでテストすることができます。
実行も可能
openapi: 3.0.0
info:
title: JSONPlaceholder API
version: 1.0.0
description: JSONPlaceholder is a free online REST API that you can use whenever you need some fake data. It's great for tutorials, testing new libraries, sharing code examples.
servers:
- url: https://jsonplaceholder.typicode.com
paths:
/posts:
get:
summary: Get all posts
responses:
'200':
description: A list of posts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Post'
post:
summary: Create a new post
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
responses:
'201':
description: Post created
/posts/{postId}:
get:
summary: Get a post by ID
parameters:
- in: path
name: postId
required: true
schema:
type: integer
responses:
'200':
description: A single post
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
components:
schemas:
Post:
type: object
required:
- id
- title
- body
- userId
properties:
id:
type: integer
title:
type: string
body:
type: string
userId:
type: integer
まとめ
OpenAPIとSwaggerを活用することで、API開発プロセスが大幅に効率化され、より迅速かつ正確にプロジェクトを進めることができます。これらのツールは、開発者にとって非常に価値のあるリソースです。