【问题标题】:Add Base Url to Django Rest Swagger将基本 URL 添加到 Django Rest Swagger
【发布时间】:2017-07-28 09:42:57
【问题描述】:

我找不到将 BASE URL 添加到 django rest swagger 的方法。我尝试添加

SWAGGER_SETTINGS = {
    "base_path": 'localhost:62090/',
}

settings.py。但它不起作用。

【问题讨论】:

    标签: django-rest-framework swagger-ui django-rest-swagger


    【解决方案1】:

    我找不到在 swagger ui 中显示基本 url 的方法,但我可以在 urls.py 中添加这样的基本 url

    schema_view = get_swagger_view(title='Pastebin API',url='/pastebin/')
    

    此代码在主机和您指定的 url 之间添加基本 url。

    【讨论】:

    • 半天无视你的回答,浪费了半天。谢谢!
    • 谢谢兄弟。它确实帮助了我。
    【解决方案2】:

    基本上您需要在 OpenAPI JSON 响应上设置 basePath。要做到这一点django_rest_swagger

    renderers.py:

    from __future__ import absolute_import, division, print_function, unicode_literals
    
    from django.core.urlresolvers import reverse
    from rest_framework_swagger import renderers
    
    
    class OpenAPIRenderer(renderers.OpenAPIRenderer):
        def get_customizations(self):
            data = super(OpenAPIRenderer, self).get_customizations()
            data['basePath'] = reverse('api-root')  # your base url here
            return data
    

    views.py:

    from rest_framework import exceptions
    from rest_framework.permissions import AllowAny
    from rest_framework.renderers import CoreJSONRenderer
    from rest_framework.response import Response
    from rest_framework.schemas import SchemaGenerator
    from rest_framework.views import APIView
    from rest_framework_swagger import renderers
    
    from .renderers import OpenAPIRenderer
    
    
    class SwaggerSchemaView(APIView):
        _ignore_model_permissions = True
        exclude_from_schema = True
        permission_classes = [AllowAny]
        renderer_classes = [
            CoreJSONRenderer,
            OpenAPIRenderer,  # your OpenAPIRenderer here
            renderers.SwaggerUIRenderer
        ]
    
        def get(self, request):
            generator = SchemaGenerator(
                title=title,
                url=url,
                patterns=patterns,
                urlconf=urlconf
            )
            schema = generator.get_schema(request=request)
    
            if not schema:
                raise exceptions.ValidationError(
                    'The schema generator did not return a schema Document'
                )
    
            return Response(schema)
    

    urls.py:

    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
        url(r'^$', views.SwaggerSchemaView.as_view(), name='api-root'),  # your swagger view here
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2015-09-12
      相关资源
      最近更新 更多