【问题标题】:How to use API Gateway to send to query parameters如何使用 API Gateway 发送查询参数
【发布时间】:2017-10-27 22:51:35
【问题描述】:

我正在尝试将 AWS API Gateway 用于其他服务,如下所示:

https://jsonplaceholder.typicode.com/comments?postId=1&postId=2

我跟着Map Request Parameters for an API Gateway API创建了get方法。

所以我在方法执行中有以下几点:

如您所见,我有一个名为 id 的查询参数。

在集成中我有:

所以我将id 映射到postId,当我尝试使用一个queryparam 的链接时,它可以工作,但是当我尝试这样的事情时:

url?id=1?postId=1&postId=2

我怎样才能使上述场景与 2 个查询参数一起工作?

【问题讨论】:

    标签: amazon-web-services aws-api-gateway


    【解决方案1】:

    我的回答是:Amazon API Gateway 不支持同名的多个查询字符串参数

    我用过多个同名参数,API Gateway 似乎不支持这样的东西。

    我能够提供多个“id”参数,但它们被映射为单个最新值,如下面的屏幕所示。

    我什至尝试过代理方法,然后“按原样”发送参数,但即使在这里亚马逊也会处理查询字符串并将具有相同名称的查询参数聚合为一个,并指定最新值。

    【讨论】:

    • 非常感谢您解决问题。但是是不是bug或者弱点?因为其他 API 以这种方式发送参数是一种可接受的方法
    • 没有描述这种情况的标准。因此我可以说,这绝对不是一个错误。检查以下链接以查看该主题的其他意见:stackoverflow.com/questions/24059773/…
    • 请注意,API Gateway 最近添加了对multiple header and query parameters 的支持。
    • HTTP协议一直支持多个同名查询字符串参数。请参阅 [RFC 2616|tools.ietf.org/html/rfc2616]。在构建 REST API 时,它是一个经常有用的功能。 API Gateway 只是 AWS 的低优先级产品。
    • 更正:URL 查询参数字符串由 HTML 表单规范管理,其中有几个。但是 all 支持多个查询参数,如果隐式的话。例如。 w3.org/TR/html52/…
    【解决方案2】:

    如果在原始帖子中不提供 API URL,则很难验证,但通常情况下它是从表单提交中格式化的。

    myurl?postId[0]=1&postId[1]=2
    

    【讨论】:

    • 不符合您的建议。另外,如果您注意到我将 id 传递给 api 网关而不是 postid
    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 2021-07-28
    • 1970-01-01
    • 2015-08-10
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多