当前位置: 首页 > 知识库问答 >
问题:

斯威格openapi 3.0。x空体

胡鸿志
2023-03-14

我试图迁移我从昂首阔步2.0到openapi 3.0.2为我的快速api。swagger定义和路径是用swagger-jsdoc编写的。这应该不会造成任何问题,因为他们的留档状态,它可以与openapi 3. x以及昂首阔步2.0工作。

当添加openapi: 3.0. x到我的大摇大摆定义视图看起来很好。然而,当试图通过昂首阔步的视图做一个帖子请求时,正文是空的。

我对自大的定义如下:

const swaggerOptions = {
    swaggerDefinition: {
        openapi: '3.0.2',
        info: {
            title: `Channels API`,
            description: "Channels API",
            version: "v1"
        },
        servers: [ {
            url: "http://127.0.0.1:3000",
            description: 'Local server'
        }],
    },
    apis: ['./routes/*.js'],
};

现在我有一个文件通道。js作为路由器:它有以下定义:

class Channel extends BaseRouter {
/**
* @swagger
*
* definitions:
*   channel:
*     type: object
*     tags:
*       - Channels
*     properties:
*       name:
*           type: string
*       global:
*           type: boolean
*     required:
*       - name
*/

constructor(app, version) {
    super(app, new ChannelCtrl(), version);
}

post() {
    /**
     * @swagger
     * /api/v1/channels:
     *  post:
     *      tags:
     *          - Channels
     *      name: Create
     *      produces:
     *          - application/json
     *      consumes:
     *          - application/json
     *      summary: Create new channel object
     *      parameters:
     *       - name: channel
     *         required: true
     *         in: body
     *         description: Fields of the channel object to be created
     *         type: object
     *         schema:
     *             $ref: '#/definitions/channel'
     *      responses:
     *          '200':
     *              description: Channel object has been created
     *              application/json:
     *                  schema:
     *                      $ref: '#/definitions/channel'
     */
    this.app.post(`/api/${this.version}/channels`, this.controller.create.bind(this.controller));
    return this;
}

尝试它与昂首阔步2.0似乎工作正常。.我错过了什么?

共有1个答案

郑浩博
2023-03-14

在openapi 3.0. x中,他们已经将参数替换为请求体,如下所示https://swagger.io/docs/specification/describing-request-body/因此您的文件channels.js应该如下所示:

    class Channel extends BaseRouter {
/**
* @swagger
*
* definitions:
*   channel:
*     type: object
*     tags:
*       - Channels
*     properties:
*       name:
*           type: string
*       global:
*           type: boolean
*     required:
*       - name
*/

constructor(app, version) {
    super(app, new ChannelCtrl(), version);
}

post() {
    /**
     * @swagger
     * /api/v1/channels:
     *  post:
     *      tags:
     *          - Channels
     *      name: Create
     *      produces:
     *          - application/json
     *      consumes:
     *          - application/json
     *      summary: Create new channel object
     *      requestBody:
     *         content:
     *            application/x-www-form-urlencoded:
     *               schema:
     *                  type: object
     *                  properties:
     *                     field1:          # <!--- form field name
     *                        type: string
     *                     field2:          # <!--- form field name
     *                        type: string
     *      responses:
     *          '200':
     *              description: Channel object has been created
     *              application/json:
     *                  schema:
     *                      $ref: '#/definitions/channel'
     */
    this.app.post(`/api/${this.version}/channels`, this.controller.create.bind(this.controller));
    return this;
}
 类似资料:
  • 问题内容: 我一直在尝试实现单例,以用作我从网络上传到我的iOS应用的照片的缓存。我在下面的代码中附加了三个变体。我试图使版本2正常工作,但是它导致了我不理解的编译器错误,并希望就我做错的事情寻求帮助。变体1进行缓存,但我不喜欢使用全局变量。变体3并没有进行实际的缓存,我相信这是因为我在赋给var ic = ....的赋值中获得了副本,对吗? 任何反馈和见解将不胜感激。 谢谢Zvi 问题答案: 标

  • 我正试图将Swagger添加到现有的spring boot应用程序中,如本教程所述。 我的主要应用课程如下: 斯威格配置是: 我可以在启动日志中看到Spring显然识别了Swagger和它的路线: 但是当试图访问时,我得到一个普通的404作为响应。 我在网上能找到的所有类似问题都是指人们不使用Spring Boot,必须手动映射资源(也在同一教程链接中描述),但我的情况并非如此。 有没有办法解决这

  • 问题内容: 我正在学习快速,并试图理解字典。我已经习惯了PHP,您可能会在其中编写以下内容… 在此示例中,将按以下顺序输出值:1、2、3 我的快速代码看起来像这样… 但是,值以意外的顺序出现。我可以做些干净的事情来保持值的创建顺序,还是不能对字典进行快速排序? 问题答案: 正如已经回答的那样,词典的要点是未排序。Swift(和Objective-C)中有三种类型的集合 数组是项目的有序列表。当项目

  • 问题内容: 什么之间的区别,以及何时该使用的呢? 例如,在Python中,如果我想打印字典,我只是,但是现在有2个其他选项。我应该如何以及何时使用它们? 问题答案: 一些区别: vs : 调试应用程序时,该功能在Xcode控制台中打印消息。 这是Swift 2中已删除且不再使用的变体。如果看到正在使用的旧代码,则可以安全地将其替换为。 回到Swift 1.x,没有在打印字符串的末尾添加换行符,而是

  • 问题内容: 为了在使用Swift时与C API集成,我需要使用sizeof函数。在C语言中,这很容易。在Swift中,我处于类型错误的迷宫中。 我有以下代码: 第二行显示错误“’NSNumber’不是’T.Type’的子类型”。为什么会这样,我该如何解决? 问题答案: 使用sizeof如下: 使用类型作为参数。 如果您想要变量的大小,可以将该字段传递给。 像这样: 或更简单地说(由user1020

  • 问题内容: NS和非NS类之间有什么区别?特别是vs ?是否代表围绕核心非功能性的某种包装器? 问题答案: Swift 3 为现有Foundation类类型引入了一些新的 覆盖值类型 ,例如for ,for 等。完整列表和详细信息可以在下面找到 SE-0069变异性和基础价值类型 一些原因是 提供适当的值语义, 而不是可变且不可变的变体, 更多的“ Swifty” API。 新的叠加层类型应提供相