欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

如下所示:

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ì),然而完全通過(guò)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)化使用方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?設(shè)計(jì)模式行為型解釋器模式

    Python?設(shè)計(jì)模式行為型解釋器模式

    本文介紹了Python解釋器模式,解釋器模式即Interpreter?Pattern,給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子,下面文章進(jìn)入更深層學(xué)習(xí),需要的小伙伴可以參考一下
    2022-02-02
  • python神經(jīng)網(wǎng)絡(luò)Inception?ResnetV2模型復(fù)現(xiàn)詳解

    python神經(jīng)網(wǎng)絡(luò)Inception?ResnetV2模型復(fù)現(xiàn)詳解

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)Inception?ResnetV2模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法

    Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法

    這篇文章主要介紹了Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法,昨晚寫(xiě)了個(gè)小爬蟲(chóng),簡(jiǎn)單分析下發(fā)現(xiàn)可以修改請(qǐng)求的url,直接獲取所有目標(biāo)的數(shù)據(jù),想先打印在控制臺(tái)看看,發(fā)現(xiàn)打印的數(shù)據(jù)不全,所以本文記錄了一下解決方法,需要的朋友可以參考下
    2024-03-03
  • Python中設(shè)置變量作為默認(rèn)值時(shí)容易遇到的錯(cuò)誤

    Python中設(shè)置變量作為默認(rèn)值時(shí)容易遇到的錯(cuò)誤

    這篇文章主要介紹了Python中設(shè)置變量作為默認(rèn)值時(shí)容易遇到的錯(cuò)誤,這是Python新手經(jīng)常容易碰到的問(wèn)題,且往往不會(huì)被輕易察覺(jué)到,需要的朋友可以參考下
    2015-04-04
  • pycharm 添加解釋器的方法步驟

    pycharm 添加解釋器的方法步驟

    這篇文章主要介紹了pycharm 添加解釋器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Django?中使用日志的方法

    Django?中使用日志的方法

    Django?使用?Python?內(nèi)置的?logging?模塊處理系統(tǒng)日志,所以,只要掌握了?Python?中的?logging?模塊,基本也就能夠在?django?中使用日志了,本文重點(diǎn)給大家介紹django?中使用日志的方法,感興趣的朋友一起看看吧
    2022-07-07
  • Python Pygame實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)

    Python Pygame實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)

    如今的游戲可謂是層出不窮,不過(guò)小編發(fā)現(xiàn),賽車游戲也是深受大家歡迎啊,像跑跑卡丁車、QQ飛車,還有主機(jī)游戲極品飛車系列。本文將用Python中的Pygame模塊制作一個(gè)簡(jiǎn)單的賽車游戲,感興趣的可以了解一下
    2022-03-03
  • 利用python匯總統(tǒng)計(jì)多張Excel

    利用python匯總統(tǒng)計(jì)多張Excel

    這篇文章主要介紹了利用python匯總統(tǒng)計(jì)多張Excel,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • Python利用matplotlib繪制散點(diǎn)圖的新手教程

    Python利用matplotlib繪制散點(diǎn)圖的新手教程

    這篇文章主要給大家介紹了關(guān)于Python利用matplotlib繪制散點(diǎn)圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python中樹(shù)與樹(shù)的表示知識(shí)點(diǎn)總結(jié)

    python中樹(shù)與樹(shù)的表示知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家分享的是關(guān)于python中樹(shù)與樹(shù)的表示的相關(guān)知識(shí)點(diǎn),需要的讀者們學(xué)習(xí)下吧。
    2019-09-09

最新評(píng)論