当前位置: 首页 > 知识库问答 >
问题:

Swagger:不允许对POST方法进行查询参数?

赵高韵
2023-03-14

我有一个用Swagger描述的POSTendpoint,我希望这个endpoint也有查询参数。我们使用1.2 swagger格式是因为传统原因。我们使用3scale,它托管文档,您可以在他们的web UI中编辑您的swagger。然而,当我试图保存文档时,它给我以下错误。

< code>JSON规范不能在同一方法上有paramType='body '和param type = ' query '

我在斯威格的规格中找不到任何东西表明这是一个实际的限制。这可能是3Scale特有的问题,还是普遍存在的虚张声势限制?如果是后者,有人能给我指出一个说明它的规范吗?

实际的RESTendpoint并不关心,它对POST上的查询参数很满意。这只是为了得到快乐的招摇工具。下面是swagger文档的简短片段:

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

共有2个答案

廉志强
2023-03-14

以下示例适用于我,但我使用required=false:

 {
        "in": "query",
        "name": "myQueryParam",
        "required": false,
        "type": "string"
 }

另请参见查询和/或正文中的Swagger参数

颛孙铭
2023-03-14

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

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

https://github . com/OAI/open API-Specification/blob/master/versions/1.2 . MD

 类似资料:
  • 我有一个非常简单的Spring引导应用程序,它由以下代码保护: 这个想法是为了保护“admin”部分。它公开了一个RESTAPI。问题是所有的帖子都被退回了 405方法不允许 如果我从应用程序中删除安全启动器,它就会工作。这让我相信安全配置是问题所在。但我不知道怎么做。

  • 从Laravel开始,我在尝试发布到我的一个页面时遇到了一个问题。 我正在使用邮递员创建一个帖子请求到我的 /clock页面。 这篇文章发送了一个简单的Json,只有一个字段: 以下是邮报的标题: 我的路线当前位于路线/api中。php文件夹,并包含以下内容: 它链接到如下所示: 当我在邮递员执行后,这是我得到的错误:

  • 注意:这个问题与这里的问题不同,因为我需要它来处理Swagger。 给定一个 FastAPI endpoint,我想允许任意一组 URL 参数,同时保持 Swagger 支持。 我的用例是,我想支持一组类似JSON API的查询参数,例如: 方括号的使用阻止了我使用传统的类来建模查询参数,所以我直接使用对象来代替。但是,我想使用Swagger来测试endpoint。我找不到提供任意URL参数的方法

  • 因此,我在Rails中的模型的ElasticSearch关注中有以下模块。 这是有效的,但是如何使每个bool查询(must、must_not、filter)接受或空参数呢? 假设我传递一个空的,它将获得所有文档。然后,当我传递一个空的参数时,它将返回所有大小。

  • 我有一个restcontroller和post方法,带有以下url和json请求。http://server/member/sc/v1/limited-liability/medicare 使用post方法和json请求在本地触发请求时,获得正确的响应。但在docker中以spring boot应用程序的形式运行会将异常作为不允许的方法抛出。最初,我将这个docker服务部署为put方法。现在我转

  • 例如:我有两个相同的路由定义endpoint: 发布/api/customer(路由模板->/api/customer) post/api/customer?f={f}&l={l}(路由模板->/api/customer) 默认的swagger生成器的问题是它给出了与相同endpoint的冲突。我尝试了swashbuckle中的方法,但没有太大帮助。