✨ OpenAPIとは? RESTful API設計のスタンダード

post-cover

OpenAPI とは?

https://swagger.io/docs/specification/about/ site preview image

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 site preview image

オンライン

オンライン上にエディターが用意されている https://swagger.io/tools/swagger-editor/ site preview image

VSCode

VSCode のプラグインにもSwagger Editorがある

スクリーンショット 2024-04-24 5.51.32

Swagger UI

Swagger UI は、API定義書をUIととして表示するためのツール。 YamlやJSONで作成したAPI定義書をSwagger UIにコピペするだけで、APIのドキュメントがUIとして表示される。Swagger UI上で直接、テストすることも可能。

🌍 Swaggerを使ってみよう

以下のYAMLは、Swaggerを使用して記述されたサンプルAPI仕様です。これをもとに、APIの動作をSwagger UIでテストすることができます。

スクリーンショット 2024-04-24 6.11.31

実行も可能 スクリーンショット 2024-04-24 6.11.55

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開発プロセスが大幅に効率化され、より迅速かつ正確にプロジェクトを進めることができます。これらのツールは、開発者にとって非常に価値のあるリソースです。


Profile picture
michael ☻︎ 🇯🇵
Web Engineer(PHP/Laravel, Python/FastAPI/Flask, TypeScript/Vue/React, AWS/GCP, etc.) / Freelance /
Profile picture
michael ☻︎ 🇯🇵
Web Engineer(PHP/Laravel, Python/FastAPI/Flask, TypeScript/Vue/React, AWS/GCP, etc.) / Freelance /
FebMarAprMayJunJul
© 2024, PWE