标签: swagger-tools

多态性中的"鉴别器",OpenAPI 2.0(Swagger 2.0)

引用OpenAPI 2.0,模式对象Swagger 2.0,模式对象以及discriminator字段定义:

添加对多态性的支持.鉴别符是架构属性名称,用于区分继承此架构的其他架构.必须在此模式中定义使用的属性名称,它必须位于required属性列表中.使用时,值必须是此架构的名称或继承它的任何架构.

我的困惑/问题:

  • 这对我来说是模棱两可的,它在继承或多态性中起到了什么样的作用.有人可以discriminator用一个工作实例来解释它究竟做了什么以及如果我们不使用它会怎样?某些操作依赖于它的任何错误,警告或任何工具?
  • 是不是swagger-editor不支持discriminator,并且这个字段用于其他一些工具?

到目前为止我尝试了什么:

  • 我试图使用swagger编辑器和相同文档中的示例(也在下面提到),来玩这个属性,看看我是否可以看到它的任何特殊行为.我更改了属性,删除了它,并将Dog模型扩展到更深层次并在新的子模型上尝试相同,但我没有看到swagger-editor预览中的任何更改.
  • 我尝试在线搜索,特别是stackoverflow问题,但没有找到任何相关信息.

我用来做实验的示例代码:

definitions:
  Pet:
    type: object
    discriminator: petType
    properties:
      name:
        type: string
      petType:
        type: string
    required:
    - name
    - petType
  Cat:
    description: A representation of a cat
    allOf:
    - $ref: '#/definitions/Pet'
    - type: object
      properties:
        huntingSkill:
          type: string
          description: The measured skill for hunting
          default: lazy
          enum:
          - clueless
          - lazy …
Run Code Online (Sandbox Code Playgroud)

swagger swagger-2.0 swagger-editor swagger-tools openapi

22
推荐指数
2
解决办法
2万
查看次数

swagger工具错误处理程序中间件没有捕获错误

概观

我的自定义errorHandler中间件没有捕获到swagger-tools请求验证器错误.相反,将swagger工具HTML错误发送回客户端.如何让我的errorHandler中间件捕获swagger工具验证错误并相应地响应客户端?

我的预后

不幸的是,我很无能为力.无论我在哪里放置app.use(errorHandler)指令,swagger工具html错误都会返回给客户端,我的errorHandler函数永远不会捕获错误.

也许我忽略了一些关于我的设置的错误.下面是我的app.js文件,在我的app.js下面是返回给客户端的[不受欢迎的] swagger-tools HTML错误响应.同样,我尝试将app.use(errorHandler)字面(比喻)放在任何地方,尽管以下代码仅在两个地方显示它.

app.js

"use strict";

var swaggerTools = require("swagger-tools");
var compression = require("compression");
var app = require("express")();
var logger = require("./config/logger");
var projectConfig = require("./config/projectConfig");
var debug = require("debug")("app-js"); // run this to enable debug logging DEBUG=app-js node app.js

// swaggerRouter configuration
var options = {
    controllers: './api/controllers',
    useStubs: false
};

// The Swagger document (require it, build it programmatically, fetch it from a URL, ...)
var swaggerDoc = require('./api/swagger/swagger.json');

// compress all requests except …
Run Code Online (Sandbox Code Playgroud)

node.js express apigee apigee127 swagger-tools

9
推荐指数
1
解决办法
3763
查看次数