首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以x-www-form-urlencoded格式将数据从aws api网关发送到http端点

以x-www-form-urlencoded格式将数据从aws api网关发送到http端点
EN

Stack Overflow用户
提问于 2017-07-14 22:10:07
回答 2查看 1.5K关注 0票数 1

我有一个AWS API网关代理方法。如果我将数据发布到AWS API网关,那么AWS API网关也会将数据发布到我的PHP后端。我在API网关中有这个映射模板:

代码语言:javascript
复制
{
    "body-json" : $input.json('$'),
    "context" : {
        "cognito-identity-id" : "$context.identity.cognitoIdentityId"
    }
}

问题是API网关发布的数据是JSON格式的。并且PHP不理解JSON (内容类型应用程序/json),$_POST数组为空。PHP理解application/x-www-form-urlencoded格式。如何让AWS API网关以x-www-form-urlencoded格式发送数据?

EN

回答 2

Stack Overflow用户

发布于 2017-07-14 22:18:47

这个问题很愚蠢,但是你有没有试过PHP's JSON Decode function呢?

代码语言:javascript
复制
    $json = '{
       "body-json" : $input.json(\'$\'),
       "context" : {
        "cognito-identity-id" : "$context.identity.cognitoIdentityId"
       }
     }';

$phpArray = json_decode($json, true);

它将从该json生成一个关联PHP数组。

票数 0
EN

Stack Overflow用户

发布于 2017-07-14 22:32:23

Amazon API Gateway使用以下逻辑选择映射模板:

当请求中没有Content-Type头部时,API Gateway会假定其默认值为application/json。对于这样的请求,API Gateway使用application/json作为默认密钥来选择映射模板(如果已定义)。当没有与此键匹配的模板时,如果passthroughBehavior属性设置为WHEN_NO_MATCH或WHEN_NO_TEMPLATES,则API Gateway通过未映射的方式传递有效负载。

当请求中未指定Accept头部时,API Gateway假定其默认值为application/json。在这种情况下,API Gateway为application/json选择一个现有的映射模板来映射响应负载。如果没有为application/json定义模板,API Gateway会选择第一个现有的模板,并使用它作为默认模板来映射响应负载。同样,当指定的Accept标头值与任何现有模板键都不匹配时,API Gateway将使用第一个现有模板。如果没有定义模板,API Gateway只是通过unmapped传递响应负载。

例如,假设API具有为请求有效负载定义的application/json模板,并具有为响应有效负载定义的application/xml模板。如果客户端在请求中设置了"Content-Type : application/json“和"Accept : application/xml”头部,则请求和响应负载都将使用相应的映射模板进行处理。如果缺少Accept:application/xml头,则应用程序/xml映射模板将用于映射响应有效负载。要返回未映射的响应有效负载,您必须为application/json设置一个空模板。

选择映射模板时,仅使用Accept和Content-Type标头中的MIME类型。例如,"Content-Type: application/json;charset=UTF-8“的头部将有一个请求模板,其中选择了application/json键。

来源:http://docs.aws.amazon.com/apigateway/latest/developerguide/request-response-data-mappings.html#transforming-request-response-body

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45105076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档