简体   繁体   English

Django Swagger Rest API,当api在ui的不同服务器上时,tryit现在可以运行

[英]Django Swagger Rest API, tryit now function when api is on different server to ui

I am trying to document our Django Rest API using Django Swagger Rest API where our API is on different server to UI 我正在尝试使用Django Swagger Rest API记录我们的Django Rest API,其中我们的API位于不同的服务器上

Trying to change the TryIt now URL for the curl request as the API is on a different server to the UI 尝试更改curl请求的TryIt now URL,因为API位于与UI不同的服务器上

I have tried setting url in get_swagger_view, but this appends ui url before this url I have tried changing base_path in SWAGGER settings but nothing works 我已经尝试在get_swagger_view中设置url,但这会在此url之前附加ui url我尝试在SWAGGER设置中更改base_path但是没有任何效果

Assuming that you tried absolute url and it didn't work, another way to do that is customize the generator instead of using get_swagger_view function. 假设您尝试了绝对URL并且它不起作用,另一种方法是自定义生成器而不是使用get_swagger_view函数。 You can change whatever you need, for instance: 你可以改变你需要的任何东西,例如:

from rest_framework import response, schemas
from rest_framework.decorators import api_view, renderer_classes
from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer

class CustomRenderer(OpenAPIRenderer):
    def get_customizations(self):
        data = super().get_customizations()
        data['host'] = 'yourdomain.com/path'
        return data


@api_view()
@renderer_classes([SwaggerUIRenderer, CustomRenderer])
def swagger_view(request):
    generator = schemas.SchemaGenerator(title='Your title')
    return response.Response(generator.get_schema(request=request))

Don't forget to configure this function in your urls.py: 不要忘记在urls.py中配置此功能:

urlpatterns = [
    url(r'docs^$', swagger_view)
]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM