最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django-rest-swagger的優(yōu)化使用方法

 更新時(shí)間:2019年08月29日 10:19:35   作者:pushiqiang  
今天小編就為大家分享一篇django-rest-swagger的優(yōu)化使用方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

如下所示:

requirements.txt
django==1.10.5

djangorestframework==3.5.3

django-rest-swagger==2.1.1

參考英文文檔:

http://django-rest-swagger.readthedocs.io/en/latest/

使用swagger工具結(jié)合Django-rest-framework進(jìn)行restful API的管理以及可視化顯示的時(shí)候,由于swagger2.1以后不再使用yaml文檔描述api,改而使用json描述,雖然swagger有著自動(dòng)適配url掃描生成文檔的能力,可是自動(dòng)生成的文檔并不詳細(xì),然而完全通過json文件描述所有的api,工作量比較大,且有的api也不需要詳細(xì)描述,因而需要自定義api的json描述和自動(dòng)掃描生成相結(jié)合。

實(shí)現(xiàn)如下:

swagger_views.py

# -*- coding: utf-8 -*-

import json
from collections import OrderedDict

from openapi_codec import OpenAPICodec
from openapi_codec.encode import generate_swagger_object
from coreapi.compat import force_bytes

from django.conf import settings

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.schemas import SchemaGenerator

from rest_framework_swagger.renderers import (
 SwaggerUIRenderer,
 OpenAPIRenderer
)


class SwaggerSchemaView(APIView):
 renderer_classes = [
  OpenAPIRenderer,
  SwaggerUIRenderer
 ]

 def load_swagger_json(self, doc):
  """
  加載自定義swagger.json文檔
  """
  data = generate_swagger_object(doc)
  with open(settings.API_DOC_PATH) as s:
   doc_json = json.load(s, object_pairs_hook=OrderedDict)

  data['paths'].update(doc_json.pop('paths'))
  data.update(doc_json)
  return OpenAPICodec().decode(force_bytes(json.dumps(data)))

 def get(self, request):
  generator = SchemaGenerator(title='后端API文檔',
         urlconf='chess_user.urls')
  schema = generator.get_schema(request=request)
  document = self.load_swagger_json(schema)

  return Response(document)

urls.py

from django.conf.urls import url, include
from django.conf.urls.static import static
from .swagger_views import SwaggerSchemaView


urlpatterns = [
 url(r'^api-doc/$', SwaggerSchemaView.as_view(), name='docs'),

settings.py

SWAGGER_SETTINGS = {
 'JSON_EDITOR': True,
 'LOGIN_URL': 'login',
 'LOGOUT_URL': 'logout',
}

API_DOC_PATH = os.path.join(BASE_DIR, "api-doc/swagger.json")

api-doc/swagger.json

{
 "paths": {
  "v1/user/profile/": {
   "get": {
    "tags": [
     "v1"
    ],
    "description": "用戶profile\n",
    "responses": {
     "200": {
      "description": "OK",
      "schema": {
       "title": "User",
       "type": "object",
       "properties": {
        "username": {
         "type": "string"
        },
        "email": {
         "type": "string"
        },
        "phone_number": {
         "type": "string"
        }
       }
      }
     }
    }
   }
  }

 }
}

若有bug,歡迎指出!

以上這篇django-rest-swagger的優(yōu)化使用方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

田阳县| 科技| 泗洪县| 盘锦市| 图片| 彭州市| 天柱县| 崇明县| 赣州市| 武功县| 平山县| 虎林市| 洛阳市| 阳东县| 东莞市| 修武县| 海原县| 岐山县| 鹤壁市| 哈尔滨市| 资兴市| 枝江市| 梅州市| 龙山县| 清镇市| 柘荣县| 吉林市| 阜城县| 个旧市| 松溪县| 磴口县| 嘉义市| 巫山县| 鄂托克旗| 米泉市| 祁阳县| 唐海县| 什邡市| 扶余县| 德州市| 巴林左旗|