Django rest_framework_swagger登入之後才能訪問API文件
阿新 • • 發佈:2018-12-12
1. views.py裡新增檢視函式:
permission_classes = [permissions.IsAuthenticated]
def get_swagger_view(title=None, url=None, patterns=None, urlconf=None): """ 登入訪問API文件 Returns schema view which renders Swagger/OpenAPI. """ class SwaggerSchemaView(APIView): _ignore_model_permissions = True exclude_from_schema = True permission_classes = [permissions.IsAuthenticated] renderer_classes = [ CoreJSONRenderer, renderers.OpenAPIRenderer, 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) return SwaggerSchemaView.as_view()
2. urls.py裡配置路由
from heat_backends.account.views import Index, get_swagger_view
schema_view = get_swagger_view(title='HEAT API')
urlpatterns = [
url(r'^admin/', admin.site.urls),
# 配置路由
url(r'^docs/', schema_view),
url(r'^api-auth/', include('rest_framework.urls')),
]
3. setting.py裡設定swagger
SWAGGER_SETTINGS = { # 基礎樣式 'SECURITY_DEFINITIONS': { "basic": { 'type': 'basic' } }, # 如果需要登入才能夠檢視介面文件, 登入的連結使用restframework自帶的. 'LOGIN_URL': 'rest_framework:login', 'LOGOUT_URL': 'rest_framework:logout', # 介面文件中方法列表以首字母升序排列 # 'APIS_SORTER': 'alpha', # 如果支援json提交, 則介面文件中包含json輸入框 'JSON_EDITOR': True, # 方法列表字母排序 'OPERATIONS_SORTER': 'alpha', 'VALIDATOR_URL': None, }
差不多這些吧,另外的就是需要注意把rest_framework_swagger配置在INSTALLED_APPS,祝使用愉快!?