DRFプロジェクトのスワッガー(OpenAPI)スキーマを生成したいと思います。ビューセットアクションのDjango RESTフレームワークスキーマパラメータリスト
生成されたスキーマにクエリパラメータ指定を追加するにはどうすればよいですか?
FileViewSet.listメソッドを見てください。ここではrequest.GET
パラメータproject
を文書化(必須)する必要がありますが、自動スキーマ生成ではそれが欠けています。
# views.py
class FileSerializer(serializers.ModelSerializer):
class Meta:
model = File
fields = ('name', 'id', 'project')
class FileViewSet(viewsets.ModelViewSet):
queryset = File.objects.all()
serializer_class = FileSerializer
def list(self, request):
project = request.GET.get("project", None)
qs = self.get_queryset().filter(project=project)
router = routers.DefaultRouter(trailing_slash=False)
router.register(r'^file$', FileViewSet)
# OpenAPI Schema generation
class SwaggerRenderer(renderers.BaseRenderer):
media_type = 'application/openapi+json'
format = 'swagger'
def render(self, data, media_type=None, renderer_context=None):
codec = OpenAPICodec()
return codec.dump(data)
schema_view = get_schema_view(
title='API',
public=True,
renderer_classes=[SwaggerRenderer],
authentication_classes=[],
permission_classes=[AllowAny],
patterns=router.urls,
)
api_urls = router.urls + [url(r'^schema$', schema_view, name="schema")]
そしてurls.py
でapi_urls
をinluding:ここ
は、例えば、APIプロジェクトである
# urls .py
from .views import api_urls
urlpatterns = [
url(r'^v1/', include(api_urls, namespace="v1")),
]
手動でカスタムフィールドを追加するAPIViewを文書化するためのDRF coreapi ManualScheme docsがありますが、のためのドキュメントはありませんビューセット
クエリパラメータの設定はどうですか?このようにして、私は基本的な設定だけを得るでしょう。 –
[this](https://stackoverflow.com/questions/45222078/how-to-use-query-parameters-in-django-swagger-documentation)の質問をご覧ください。 –