A OpenAPI(Swagger) - user000422/0 GitHub Wiki

基本情報

参考記事: https://riotz.works/articles/lopburny/2019/07/21/efficient-way-to-manage-api-definition/ REST APIについて理解していることが前提。 RESTfulな設計に基づいている。 ソースコード修正と同時に定義の修正も行うため(行うはず)設計書が常に最新である。

■形式 「YAML」「JSON」の2形式に対応。 「YAML」の方が読み書きしやすいのでおすすめです。 「YAML」はコメントを記述できる。

■「Swagger UI」OR「Redoc」(公開)どちらが良い? ・Redoc OpenAPI(Swagger)仕様を基にして、APIのドキュメントを生成するためのツール。

Swagger UI

GitHubからダウンロードして自分のサーバーに設置する。 https://github.com/swagger-api/swagger-ui

cd /usr/local/src
# ここに配置
unzip swagger-ui-master.zip
mkdir /var/www/html/swagger-ui
cp -r swagger-ui-master/dist /var/www/html/swagger-ui
# 既にLaravelがある場合は コピー先Laravelプロジェクトのpublic

# Apache設定ファイル作成
# ドキュメントルートに設定
vi /etc/httpd/conf/httpd.conf

yaml

# ひな形
openapi: 3.0.0
info:
  title: サンプルAPI
  description: サンプルAPIになります。
  version: 1.0.0
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Access token for API
# 下部
servers:
  - url: https://google.com
paths:
  /api/v1/users:
    get:
      summary: ユーザ一覧 取得
      security:
        - bearerAuth: []  # ここでBearerトークンを要求
      parameters:
        - in: path # パラメータの設定箇所「in: path」or「in: query」
      requestBody:
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  user_id:
                    type: integer
                    description: ユーザID
                    example: 100

with Laravel

# swagger-php 導入
composer require zircote/swagger-php

# OpenAPI yaml出力(下記の場合はLaravelプロジェクトのディレクトリでコマンド実行)
./vendor/bin/openapi app -o openapi.yaml
use OpenApi\Attributes as OA;

#[OA\Info(title: "Sample API", version: "0.1")] // Info 必須
#[OA\Server(url: "http://localhost:8080")]
class SampleController extends Controller
{
  #[OA\Get(path: '/sample')] // HTTPメソッド 必須
  #[OA\Response(response: 200, description: 'OK')] // Response詳細 必須
  public function index()
  {
    //
  }
}