引用OpenAPI 2.0,模式对象或Swagger 2.0,模式对象以及discriminator字段定义:
添加对多态性的支持.鉴别符是架构属性名称,用于区分继承此架构的其他架构.必须在此模式中定义使用的属性名称,它必须位于
required属性列表中.使用时,值必须是此架构的名称或继承它的任何架构.
我的困惑/问题:
discriminator用一个工作实例来解释它究竟做了什么以及如果我们不使用它会怎样?某些操作依赖于它的任何错误,警告或任何工具?discriminator,并且这个字段用于其他一些工具?到目前为止我尝试了什么:
Dog模型扩展到更深层次并在新的子模型上尝试相同,但我没有看到swagger-editor预览中的任何更改.我用来做实验的示例代码:
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) 我的自定义errorHandler中间件没有捕获到swagger-tools请求验证器错误.相反,将swagger工具HTML错误发送回客户端.如何让我的errorHandler中间件捕获swagger工具验证错误并相应地响应客户端?
不幸的是,我很无能为力.无论我在哪里放置app.use(errorHandler)指令,swagger工具html错误都会返回给客户端,我的errorHandler函数永远不会捕获错误.
也许我忽略了一些关于我的设置的错误.下面是我的app.js文件,在我的app.js下面是返回给客户端的[不受欢迎的] swagger-tools HTML错误响应.同样,我尝试将app.use(errorHandler)字面(比喻)放在任何地方,尽管以下代码仅在两个地方显示它.
"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)