问题标签 [swagger-tools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2340 浏览

swagger - 使用 Swagger 2.0 更改请求参数验证失败的响应代码

我在 swagger 之上使用 Apigee 127 来创建 REST API。

这是配置文件的头swagger.yaml

然后我有这个AuthenticationRequest 模式对象,它描述了身份验证的请求正文应该是怎样的。到目前为止,一切都很好。

当我提出有效请求时,它工作正常,但是当我提出无效请求时,我得到以下响应:

如果我的 API 规范没有指定我必须400 Bad Request为无效请求返回响应代码(顺便说一句,这更有意义),那将没有问题。

所以问题是我在 Swagger 文档中找不到改变这种行为的方法。

任何人?

0 投票
1 回答
2761 浏览

node.js - 具有自定义配置的 Swagger 不加载参数

我一直在节点应用程序中使用具有自定义配置和目录结构的 Swagger。

这是我的 app.js 的片段

swagger/config在具有标准 YAML 配置的config目录下default.yml

现在有问题在控制器上req.swagger.params总是返回null

0 投票
1 回答
358 浏览

api - 如何从 swagger-tools 控制器内部访问标题键?

当参数定义为“in”标头时,swagger-tools 通过“args”变量将其提供给控制器,但不会包含其他标头的键。

我的问题是:如何读取“参数”部分中未明确定义的标头键和值,例如“缓存控制”或“X-Requested-With”?

0 投票
1 回答
667 浏览

handlebars.js - Swagger-Tools 中的 Swagger-UI 自定义

我希望能够修改 swagger-ui,它目前通过 swagger 工具中的实例提供服务,这是 swagger-ui 的当前 dist 文件夹。我想通过swagger 工具没有的main/templates修改模板等。我该怎么办?

0 投票
1 回答
512 浏览

swagger-ui - 节点上的 swagger-tools:如何加载 swaggerUi?

但是如何为我的 API加载类似http://petstore.swagger.io/的 UI。

0 投票
1 回答
5448 浏览

node.js - 招摇工具错误处理程序中间件未捕获错误

概述

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

我的预测

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

也许我忽略了我的设置明显不正确的地方。下面是我的 app.js 文件,在我的 app.js 下面是返回给客户端的 [undesired] swagger-tools HTML 错误响应。同样,我尝试将 app.use(errorHandler) 从字面上(形象地)放在任何地方,尽管下面的代码仅在两个地方显示它。

应用程序.js

swagger 工具 html 错误返回给客户端

我在运行什么版本?

节点:

最新版本的招摇工具和快递:

任何关于如何让我的 errorHandler 中间件捕获并因此覆盖 swagger-tools html 错误的帮助和/或洞察力将非常有义务。我也在 apigee 社区论坛中发布了我的问题,因为它是 apigee-127 项目的一部分。 https://community.apigee.com/questions/29267/swagger-tools-error-handler-middleware-not-catchin.html

谢谢!

0 投票
1 回答
1933 浏览

node.js - 当传入的客户端 http 请求终止时终止传出的 http 请求

应用概述

我有一个使用 express.js 4 模块和 node.js 核心 http 模块实现的 node.js 服务器应用程序。在高层次上,应用程序接收传入的客户端 http 消息,对其他外部 API 进行各种 http 调用(使用 http 模块),最后根据上述各种外部 http API 响应的响应向客户端发送响应。

问题

我的问题是,当传入的客户端 http 请求被客户端终止时(例如,当客户端想要取消他们的请求时),我的 node.js 应用程序继续进行上述各种外部 http API 调用。在这种情况下,我似乎找不到向我的 node.js 应用程序的其余部分发出信号以终止其对外部 API 的各种传出 http 请求的方法。

当客户端终止他们的请求时,快速应用程序(即快速 http 服务器)会收到我正在监听的“关闭”事件。我的代码中的“关闭”事件监听器捕获了这个事件;但是,我似乎无法弄清楚如何向我的代码发出的“下游”或“后续”http请求发出信号以终止。

我的目标

当客户端终止对我的服务的传入请求时,如何向与单个客户端传入请求相关联的外部 API 发出所有传出 http 请求以终止?

我在下面提供了我的 node.js 应用程序的简化版本,其中包含一些内联代码注释,以帮助更清楚地说明我的问题。任何帮助或见解将不胜感激。谢谢!

附加信息

我正在使用 Apigee swagger-tools 中间件来执行我的 api 路由。

我发现了一些类似但不太直接适用于我的问题的已回答问题:

使用 Express/Node.js 和 Angular 处理取消的请求

如何检测用户取消请求

最好的,

克里斯

测试app.js

测试控制器.js

0 投票
2 回答
29423 浏览

swagger - 多态性中的“鉴别器”,OpenAPI 2.0 (Swagger 2.0)

引用OpenAPI 2.0, Schema ObjectSwagger 2.0, Schema Objectdiscriminator字段定义为:

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

我的困惑/问题:

  • 对我来说,它在继承或多态中究竟扮演什么角色是模棱两可的。有人可以discriminator用一个工作示例来解释它究竟做了什么,如果我们不使用它会怎样?任何错误、警告或任何依赖于它进行某些操作的工具?
  • 是不是swagger-editor不支持discriminator,而其他一些工具中使用了这个字段?

到目前为止我已经尝试过:

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

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

0 投票
0 回答
815 浏览

javascript - 在 Javascript 中结合多文件 yaml

我有我的 yaml 文件根据这样的结构拆分:

索引.yaml:

信息/index.yaml:

定义/index.yaml

定义/User.yaml

...等等(但你明白了)。我遵循了一篇博客文章的指导,正是这样做的。initializeMiddleware所以在从库调用之前swagger-tools,我的理解是我需要将所有这些yaml文件合并到一个文件中。我尝试按照@mohsen____在他的博客中描述的方式进行操作,利用该json-refs库并调用resolveRefs(or resolveRefsAt) 函数来获取一个承诺化的响应对象,该对象包含已解析 JSON 引用的文档版本。这似乎不起作用。当我尝试以下操作时,控制台不会记录任何内容:

0 投票
1 回答
340 浏览

swagger - Swagger-codegen 生成的代码有问题路由请求在路径中的参数

我使用 swagger 创建了我的 api 定义,并使用 NodeJs 中的 Swagger-tools 生成了服务器代码。SwaggerRouter 正确处理所有路由,除了带有 ID 的路由。例如,像这样的路线

/v1/factoris/self /v1/factoris/create

被定向到正确的控制器,但使用 ID 调用

/v1/factoris/{factoris_id}

作为无效路由返回。

知道我可能会错过什么吗?

这是招摇规格的样本