5

Django 1.11 と Django REST Framework 3.7 を使用して REST API を開発しています。ドキュメントを生成するためにDjango REST Swagger 2.1をインストールしました。

次のような関数ベースのビューを使用しています。

from rest_framework.decorators import api_view, permission_classes

@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass

Swagger によって生成されたドキュメント

ご覧のとおり、私のビューは Swagger によって認識され、" View description here " という正しい説明が表示されます。

でも:

  • URL パラメータの [説明] 列が空になっていることがわかります。provider
  • POST パラメーターは文書化されていません (明らかに、Swagger がそれらを知る方法がないため)

関数ベースのビューの URL と POST パラメーター、および応答に関するドキュメントを作成するにはどうすればよいですか?

YAML Docstringsを試してみましたが、古いバージョン (0.3.x) 用のようで、バージョン 2.x では動作しません。

4

4 に答える 4

4

DjangoRestFrameWork のスキーマを利用できます。 http://www.django-rest-framework.org/api-guide/schemas/

あなたの場合、次のことを試すことができます。


from rest_framework.decorators import api_view, permission_classes, schema
from rest_framework import permissions

@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
@schema(custom_schema)
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass

カスタム スキーマ定義

import coreapi, coreschema
from rest_framework.schemas import AutoSchema, ManualSchema

custom_schema = AutoSchema(manual_fields=[
    coreapi.Field("username", required=True, location="form", type="string", description="username here"),
    coreapi.Field("password", required=True, location="form", type="string", description="password field")
])

トリックを行う必要があります。詳細については、上部にあるリンクを参照してください。基本的な POST および GET パラメータは、このように機能するはずです。

于 2018-05-31T17:03:11.563 に答える
1

このgithub issueに続いて、あなたが述べたようにメソッドベースのビューは不可能のようです。

しかし、このリンクはあなたを助けることができると思います。

于 2017-11-13T14:43:28.160 に答える