2017-02-18 13 views
3

私はAPIを作って、スガガー・ドッグを作りたいと思っています。私はそのためのシリアライズを開発していません。Django Rest Swagger APIView

Views.py

class DeliveryView(APIView): 

    renderer_classes = (XMLRenderer,) 

    def get_campaign_vast(self, request, *args): 
     return response 

    def get(self, request): 
     return self.get_campaign_vast(request, data) 

    def post(self, request): 
     """ 
     This text is the description for this API 
     --- 
     param1 -- A first parameter 
     param2 -- A second parameter 
     """ 
     data = request.data 
     return self.get_campaign_vast(request, data) 

urls.py

from django.conf.urls import url,include 
from django.contrib import admin 
from rest_framework_swagger.views import get_swagger_view 

schema_view = get_swagger_view(title='Add Delivery') 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^$',schema_view), 
    url(r'^', include('deliverymanagment.urls')), 
] 

私は私が得ていないのですSWAGGERのすべてのパラメータを取得したいです。

i am not able to get parameters

私が使用しています:

ジャンゴ・静止闊歩する== 2.1.1

djangorestframeworkの== 3.5.3

+0

yamlドキュメントを使用するので、この機能はdjango-swaggerではサポートされなくなりました。私は同じ問題を抱えていますが、あなたが解決策を見つけたら私にpingできますか? –

+0

@OleksandrDashkovが親切に答えを尋ねて、依然としてあなたの質問に答えることができないか尋ねます –

+0

@RagulParani DRFのネイティブDocsに既に切り替えたので、本当にテストできません –

答えて

2

get_swagger_view()方法はありませんあなたのアプリのURLにパラメータや説明を追加するコントロールを与える

この解決方法は、明示的なスキーマ定義を使用することです。 Core APIスキーマコンテナの表現であるドキュメントを作成することができます。次のリンクを参照してください。これは、URLとアプリケーションで使用されるパラメータのスキーマを作成することが必要になります

Core API schema generator

コアAPIのセクションをお読みください。

親切に上記のリンクを参照してください闊歩coreapi.Documentcoreapi.Fieldの説明については

swagger.py

from rest_framework.decorators import renderer_classes, api_view 
from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer 
import coreapi 
from rest_framework import response 
# noinspection PyArgumentList 
@api_view() 
@renderer_classes([SwaggerUIRenderer, OpenAPIRenderer]) 
def schema_view(request): 
    print("---inside schema view-----") 
    # noinspection PyArgumentList 
    schema = coreapi.Document(
    title='Your Title', 
    url='Your host url', 
    content={ 
     'search': coreapi.Link(
      url='/search/', 
      action='get', 
      fields=[ 
       coreapi.Field(
        name='from', 
        required=True, 
        location='query', 
        description='City name or airport code.' 
       ), 
       coreapi.Field(
        name='to', 
        required=True, 
        location='query', 
        description='City name or airport code.' 
       ), 
       coreapi.Field(
        name='date', 
        required=True, 
        location='query', 
        description='Flight date in "YYYY-MM-DD" format.' 
       ) 
      ], 
      description='Return flight availability and prices.' 
     ) 
    } 
) 
    # schema = generator.get_schema(request) 
    return response.Response(schema) 

coreapi.Link用のファイルを作成します。

が闊歩ドキュメントのURLを作成します。

urls.py

url('^docs', swagger.schema_view) 
2

はドキュメントを生成します。このよう代わりにGenericAPIViewを使用することを検討してください。これは、エンドポイントがモデルに関係していないのに、動作しているときにこれを使用している、ちょっとしたハックです。

例として、次のコードは、ポストリクエストのみを受け入れ、スワッガーでseralizerを使用して文書化されたエンドポイントを作成します。

class SomeThing(GenericAPIView): 
    serializer_class = MySerializer 

    def post(self, request, *args, **kwargs): 
     serializer = MySerializer(data=request.data) 
     if serializer.is_valid() is False: 
      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

     res = do_magic(**serializer.data) 
     return Response(res) 
関連する問題