首页 > 解决方案 > Swagger:不允许在 POST 方法上查询参数?

问题描述

我有一个 Swagger 中描述的 POST 端点,我希望该端点也有查询参数。我们使用 1.2 swagger 格式是因为,嗯,遗留的原因。我们使用 3scale,它托管文档,您可以在其 Web UI 中编辑您的招摇。但是,当我尝试保存文档时,它给了我以下错误。

JSON Spec can not have paramType='body' and paramType='query' on the same method

我在招摇规范中找不到任何说明这是实际限制的内容。这可能是 3Scale 特有的,还是一般的招摇限制?如果是后者,有人可以指出一个规范来澄清它吗?

实际的 REST 端点并不关心,它对 POST 上的查询参数感到满意。它只是让 Swagger 工具变得快乐。这是 swagger 文档的缩写片段:

{
  "parameters": [
    {
      "name": "myQueryParam",
      "dataType": "string",
      "paramType": "query",
      "required": true
    },
    {
      "name": "body",
      "dataType": "string",
      "paramType": "body",
      "required": true
    }
  ],
  "httpMethod": "POST"
}

标签: swagger3scale

解决方案


不确定错误消息是否是通用验证错误,但您共享的规范中有几个错误:

  • 它是“方法”而不是“httpMethod”
  • 它是“类型”而不是“数据类型”

https://github.com/OAI/OpenAPI-Specification/blob/master/versions/1.2.md


推荐阅读