Swagger の概要
Swagger は、RESTful Web サービスの設計、構築、文書化、可視化を支援する包括的なフレームワークです。バックエンド開発時に自動生成される API ドキュメントをフロントエンド開発者に提供し、インターフェースの変更があればドキュメントも自動的に更新されます。
Swagger の主な利点
- インタラクティブな API コンソールの生成
- 開発者が API インターフェース情報を迅速に管理・確認可能
実装手順
- 必要なパッケージのインストール
- Swagger モジュールの追加
- settings.py でのアプリケーション登録
- メイン URL 設定の更新
- 開発サーバーの起動
- get_link エラーの対応
- staticfiles テンプレートタグエラーの修正
- 確認作業
前提条件
django-rest-framework(DRF)がインストールされていること。Swagger は DRF と連携して動作するため、事前に DRF 環境を整えておく必要があります。
パッケージインストール
pip install django-rest-swagger
settings.py の設定
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework_swagger', # Swagger ドキュメント自動生成
]
URL 設定(urls.py)
from django.urls import path
# DRF のスキーマビュー取得関数をインポート
from rest_framework.schemas import get_schema_view
# Swagger のレンダラークラスをインポート
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPIRenderer
# get_schema_view 関数でスキーマビューを生成
schema_view = get_schema_view(
title='API',
renderer_classes=[SwaggerUIRenderer, OpenAPIRenderer]
)
# ドキュメント用のURLパターンを設定
urlpatterns = [
path('docs/', schema_view, name="swagger")
]
インターフェースの説明
ビュークラス内にコメントとして記述された内容が、API ドキュメントの説明文として表示されます。
動作確認
python manage.py runserver
ブラウザで http://127.0.0.1:8001/docs/ にアクセス(ポートは実際の設定に応じて変更)
エラー対応
エラー1: 'AutoSchema' object has no attribute 'get_link'
解決策:settings.py に DRF のスキーマクラス設定を追加
REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
}
エラー2: 'staticfiles' is not a registered tag library
解決策:対象ファイルのテンプレートタグを修正
ファイルパス: env/lib/python3.10/site-packages/rest_framework_swagger/templates/rest_framework_swagger/index.html
修正内容:{% load staticfiles %} を {% load static %} に変更
修正後、ブラウザをリフレッシュして動作を再確認します。