如何在 Django REST Framework 中使用自定义 YAML 文件作为 API 文档?

2023-11-27

我需要将 API 文档添加到我的项目中。我使用 swagger 编辑器编写了自定义架构,现在我有一个 YAML 文件,如下所示:

swagger: "2.0"
info:
  description: "This is the documentation of Orion Protocol API"
  version: "1.0.0"
  title: "Orion Protocol API"
host: "127.0.0.1:8000"
basePath: "/api/"
paths:
  /api/decode:
    post:
      tags:
      - "pet"
      summary: "Decode the payload"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "Packet data"
        required: true
        schema:
          $ref: "#/definitions/PacketData"
      responses:
        "405":
          description: "Invalid input"

  /api/encode:
   post:
     description: "Encoding configuration parameters for the devices"
     produces:
     - "string"
     parameters:
     - in: "body"
       name: "body"
       description: "Addresses and values of configuration parameters"
      required: true
       schema:
         $ref: "#/definitions/ConfigPayload"
     responses:
       "405":
         description: "Invalid input"


  definitions:
    PacketData:
      type: "object"
      required:
      - "payload"
      properties:
     payload:
       type: "string"
       description: "Packet string starting with 78"
       example: "78010013518BB325140400000500000AAA0000002A6E0000004AC05D00006A00000000"
    ConfigPayload:
        type: "object"
       properties:
          Addresses of the configuration parameter:
            type: "string"
            description: "According to the documentation of configuration protocol"
            example: "542"

现在我该如何将其添加到项目中?它应该位于项目中的哪个位置?视图可以渲染这个文件吗? 我需要有以下路径:

urlpatterns = [
     path('documentation/', some-view-that-will-render-yaml)
]

我找到了一个解决方案,而且非常简单。我们需要将 yaml 转换为 json 并将其保存在 static 文件夹中。然后: urls.py

urlpatterns =  [
    ...
    path('swagger-ui/', TemplateView.as_view(
        template_name='swagger-ui.html',
        extra_context={'schema_url': 'openapi-schema'}
    ), name='swagger-ui'),
]

模板/swagger-ui.html:

{% load static %}
<html>
  <head>
    <title>Documentation</title>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="//unpkg.com/swagger-ui-dist@3/swagger-ui.css" />
  </head>
  <body>
    <div id="swagger-ui"></div>
    <script src="//unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
    <script>

   const ui = SwaggerUIBundle({
    url: "{% static 'swagger.json' %}" ,
    dom_id: '#swagger-ui',
    presets: [
      SwaggerUIBundle.presets.apis,
      SwaggerUIBundle.SwaggerUIStandalonePreset
    ]
  })
    </script>
  </body>
</html>

并将您的自定义架构以 json 形式保存在静态文件夹中。作品!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Django REST Framework 中使用自定义 YAML 文件作为 API 文档? 的相关文章

  • Django 2.1 测试问题

    我正在学习 Django 我已经使用 Python 进行了几年开发 并决定开始检查这个框架 我收到了奇怪的回应 我正在编写一个测试用例 它在测试之外完美运行 这就是代码 class BoardTopicsTests TestCase Hag
  • 如何使用 Python 避免在 JSON 中的 HTML 标签中关闭“/”?

    注意 这个问题非常接近在脚本标签中嵌入 JSON 对象 https stackoverflow com questions 4176511 embedding json objects in script tags 但是对该问题的回答提供了
  • Django ORM:检索帖子和最新评论而不执行 N+1 查询

    我有一个非常标准的基本社交应用程序 具有状态更新 即帖子 和每个帖子的多个评论 给定以下简化模型 是否可以使用 Django 的 ORM 高效检索所有帖子以及最新两条评论与每个帖子关联 而不执行 N 1 查询 也就是说 无需执行单独的查询来
  • 从 RabbitMQ 迁移到 Amazon SQS [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们的初创公司目前正在使用RabbitMQ with Python Django 对于消息队列 现在我们计划转移到Amazon SQS其高可用性
  • Django - 一个视图中的多个模型(表)

    操作系统 Windows10 Python 3 7 4 姜戈 2 1 我想展示这个模型 像这样在此输入图像描述 https i stack imgur com 2UERg jpg 但我不知道 我怎样才能做到这一点 我尝试了三个月来解决这个问
  • 导入错误:没有名为 app_name 的模块

    我是 python 新手 我在 SO 上看到过类似的问题 但无法弄清楚我的 Django 应用程序出了什么问题 在 settings py 中 我以点线模块形式添加了我的应用程序 INSTALLED APPS django contrib
  • UUIDField 的“默认”属性是否负责唯一性?

    我刚刚跳入 Django 进行一个快速项目 我想有一个UUID字段 https docs djangoproject com en 2 2 ref models fields uuidfield在模型中 我将其用于外部 id 字段 每个模型
  • 如何向 django 中的用户模型添加自定义权限?

    默认情况下 在 django 中 当安装了 django contrib auth 的情况下运行syncdb时 它会在每个模型上创建默认权限 如 foo can change foo can delete 和 foo can add 要向模
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • django 创建多类型用户的最佳方法

    我想在 django 中创建多个用户 我想知道哪种方法是最好的 class Teachers models Model user models ForeignKey User is teacher models BooleanField d
  • Django - 以表单形式访问 request.session

    我按如下方式调用表单 然后将其传递给模板 f UserProfileConfig request 我需要能够访问表单中的 request session 所以首先我尝试了这个 class UserProfileConfig forms Fo
  • 每次都在django查询数据库中过滤查询集吗?

    想象一下我有以下代码 qs Users objects all list for i in range 10 list append qs filter age i 这里过滤器被调用 10 次 它是连接到数据库 10 次还是第一次使用过滤器
  • 当SESSION_COOKIE_SECURE = True时如何在HTTP中获取一些用户身份信息

    以下是我正在开发的网站的简短描述 公共页面可以通过 HTTP 或 HTTPS 访问 其他一些页面 认证页面 账户详情页面等 需要通过HTTPS访问 Apache2 负责进行相关的 HTTP 到 HTTPS 链接重定向 我使用标准 Djang
  • Django 1.8 - migrate 和 makemigrations 有什么区别?

    根据这里的文档 https docs djangoproject com en 1 8 topics migrations https docs djangoproject com en 1 8 topics migrations 它说 m
  • QuerySet,对象没有属性id - Django

    我试图在 Django 中获取某个对象的 id 但不断收到以下错误 异常值 QuerySet 对象没有属性 ID 我在views py中的函数 csrf exempt def check question answered request
  • 字段“id”期望一个数字,但得到“natsu”django

    我想创建一个 user posts 视图 其中包含与特定用户相关的所有帖子 假设有用户 Natsu 撰写的博客帖子 那么登录用户 Testuser 将能够查看所有帖子由该用户发布 即用户 Natsu 的所有帖子 blog models py
  • Django 模板:输出带有所有小数位的浮点数

    我如何在 django 模板中输出这个数字 小数位数是可变的 我事先不知道 x 0 000015 1 x 输出是 1 5e 05 2 x stringformat f 输出是 0 000015 这不是本地化的 应该有逗号 我需要对输出进行本
  • Django Rest框架Json解析

    我想解析传入的POSTdjangoviews py 文件中的数据 发布数据 number 17386372 data banana apple grapes 这是我尝试读取上述传入数据的方法request views py class Fr
  • Django 自定义文件存储系统

    我有一个自定义存储 import os from django core files storage import Storage class AlwaysOverwriteFileSystemStorage Storage def get
  • Django Admin Media 前缀 URL 问题

    我有以下文件夹结构 src BAT templates admin base html src BAT media base css src BAT media admin media base css 设置 py MEDIA ROOT o

随机推荐