Swagger API“必需” - 这需要多少?

Posted

技术标签:

【中文标题】Swagger API“必需” - 这需要多少?【英文标题】:Swagger API "required" - how much is this required? 【发布时间】:2015-12-28 19:54:52 【问题描述】:

我已经使用此规范创建了一个Swagger(在 nodejs/express 上)测试 API(仅相关部分):

...
parameters:
  - name: name
    in: query
    required: true
    type: string
...

但是我可以调用带有空参数的url,例如

http://localhost/test?name=

它可以正常工作,不会抛出异常或任何其他迹象。为什么?

【问题讨论】:

【参考方案1】:

如果我通过 curl 或 postman 从终端进行类似的调用,它也可以正常工作。我从请求对象中解析查询,发现在这种情况下,查询参数被解释为空字符串。

通过 SwaggerUI 进行调用是不同的,因为 UI 实际上不会进行调用,除非查询字段有值。

尝试在您的处理程序中执行console.log(req.query);。您可能会看到name: ''。这是合法的,只是 name 的值是一个空字符串。

在这里查看 JSON4:Representing null in JSON。所以 name 已定义,但它是空的。

您可能需要检查空字符串值。

我希望这会有所帮助!

【讨论】:

以上是关于Swagger API“必需” - 这需要多少?的主要内容,如果未能解决你的问题,请参考以下文章

Swagger必需的参数在缺少时返回500,而不是404

Swagger 2.0 - 如何使“一个或另一个”参数成为必需?

SpringBoot整合Swagger2

扔掉Swagger,试试这款功能强大,零注解侵入的API接口文档生成工具!

SpringBoot Swagger2 可视化API

利用swagger模块开发flask的api接口帮助文档