如何在 openapi v3 中指定端点的授权是可选的?

How to specify an endpoint's authorization is optional in openapi v3?

我正在尝试记录现有的 API,其中包含各种端点,其身份验证是可选的。也就是说,如果用户获得授权,则返回的数据比未授权时返回的数据更多。

在 OAspec v3 中找不到明确的内容。是否有定义这种情况的编码技巧?

我目前的解决方法是编写授权代码,但在端点的描述中写明授权是可选的。这有效并且似乎足够了。然而,纯粹主义者想知道是否还有其他方法。

我刚了解到 security: 可以有一组哈希映射来满足多种身份验证协议。

两个例子:

security: # protocol A or protocol B
    - A
    - B

security: protocol A and protocol B
    - A
      B

要使安全性成为可选的,请将空要求 {} 添加到 security 数组:

security:
  - {}   # <----
  - api_key: []

这意味着可以在安全或不安全的情况下调用端点。

来源:this comment 在 OpenAPI 规范存储库中。