【问题标题】:How to set or change swagger 404 response type如何设置或更改 swagger 404 响应类型
【发布时间】:2018-07-05 18:20:55
【问题描述】:

我使用 swagger-node (https://github.com/swagger-api/swagger-node) 生成了一个应用程序。我正在使用 swagger 验证器 来查找验证错误。它工作正常,我正在捕捉错误并将它们更改为我喜欢的响应格式。

我还想处理 404 错误并返回我自己的响应。 Swagger 在提供不存在页面的 URL 时返回自动响应,我想将其更改为我的响应。

大摇大摆的回应:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /fhello</pre>
</body>
</html>

我正在寻找将其更改为 JSON 的方法。

【问题讨论】:

  • 当您收到 404 错误设置条件时解决您的错误
  • @ManjeetThakur 我不明白这种方法。抛出错误时我无权访问它,因为它在到达我的任何控制器之前在路由器中以某种方式管理 swagger 项目。
  • 把你的代码贴在这里,这样我就可以理解了
  • 是用swagger-express-mw生成的代码。我正在访问 swagger.yaml 中未指定的路径。它给了我一些默认的“HTML/文本”响应,我正在寻找一种返回 JSON 的方法。 (到目前为止,我退出了自动路由,然后有这种可能性,但我正在寻找一种在使用 swagger 路由器时做的方法)
  • swagger-express-mw 是一个围绕swagger-node-runner 的快速中间件包装器。如果您实际上将它用作中间件,那么您肯定也有自己的代码吗?

标签: node.js express http-status-code-404 swagger


【解决方案1】:

好的,我解决了。

我得到的响应不是来自 swagger-node-runner 或类似的,而是来自 express 使用的 finalhandler 模块。

所以我没有在我的服务器中处理 404 错误。

要处理swagger-node生成的项目中的404,只需在中间件路径的末尾添加一个中间件,管理之前的中间件未捕获的所有查询。

  app.use(function(req, res, next) {
      return res.status(404).json({description: 'Page not found'});
  })

(这可能是我的主要错误 - 我使用了一个带有四个参数的中间件 app.use(function(err, req, res, next) {}

【讨论】:

    猜你喜欢
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多