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

如何在AWS Lambda函数中获取GET和POST参数

江永安
2023-03-14

我正在使用AWS Lambda+API网关+无服务器(Python)。太神奇了!

queryStringParameters
body
"queryStringParameters": {
  "name": "me"
},
"body": "------WebKitFormBoundaryXAin8CB3c0fwFfAe\r\nContent-Disposition: form-data; name=\"sex\"\r\n\r\nmale\r\n------WebKitFormBoundaryXAin8CB3c0fwFfAe--\r\n",

共有1个答案

能正青
2023-03-14

如果您希望Lambda完全自由/完全透明,那么您可能需要查看Lambda代理集成

import json

def endpoint(event, context):
# With the Lambda proxy integration, API Gateway maps the entire client request to the
# input event parameter of the backend Lambda function as follows:
# {
#     "resource": "Resource path",
#     "path": "Path parameter",
#     "httpMethod": "Incoming request's method name"
#     "headers": {Incoming request headers}
#     "queryStringParameters": {query string parameters }
#     "pathParameters":  {path parameters}
#     "stageVariables": {Applicable stage variables}
#     "requestContext": {Request context, including authorizer-returned key-value pairs}
#     "body": "A JSON string of the request payload."
#     "isBase64Encoded": "A boolean flag to indicate if the applicable request payload is Base64-encode"
# }
    body = {}
    body["event"] = event

    # With the Lambda proxy integration, API Gateway requires the backend Lambda function
    # to return output according to the following JSON format:
    # {
    #     "isBase64Encoded": true|false,
    #     "statusCode": httpStatusCode,
    #     "headers": { "headerName": "headerValue", ... },
    #     "body": "..."
    # }
    response = {
        "statusCode": 200,
        "isBase64Encoded": False,
        "headers": {"x-test-header" : "foobar"},
        "body": json.dumps(body),
    }
    return response

和模板中

"paths": {
    "/{proxy+}": {
      "x-amazon-apigateway-any-method": {
        "parameters": [{
          "name": "proxy",
          "in": "path",
          "required": true,
          "type": "string"
        }],
        "produces": ["application/json"],
        "responses": {},
        "x-amazon-apigateway-integration": {
          "responses": {
            "default": {
              "statusCode": "200"
            }
          },
          "uri": "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:xxxx:function:yyy/invocations",
          "passthroughBehavior": "when_no_match",
          "httpMethod": "POST",
          "cacheNamespace": "57w2aw",
          "cacheKeyParameters": [
            "method.request.path.proxy"
          ],
          "contentHandling": "CONVERT_TO_TEXT",
          "type": "aws_proxy"
        }
      }
    }
}
 类似资料:
  • 我使用的是Spring Security3.1,我想在用户登录之前从URL获取参数。所以我希望正在访问我的登录页面的用户发送给我一个redir参数(包含他想要在他通过身份验证后转到的URL)。当我请求页面时,而不是当我尝试提交表单以登录时。 更新以获取更多信息:我的登录页面相当简单,基本上是:一个表单通过POST方法调用/j_spring_security_check(带有j_username和j

  • 问题内容: 如何从JavaScript请求中获取“ GET”变量? 是jQuery还是YUI!内置此功能吗? 问题答案: 所有数据均在 您必须解析字符串,例如。 只需以GET变量名作为参数调用该函数,例如。 如果变量没有值或不存在,则此函数将返回变量value或undefined

  • 问题内容: 我需要用JSP做一些小任务;对JSP而言,我是一个非常新的人,我想知道是否有可能从HTTP请求中仅 获取GET 或 POST 参数。 我已经看到了ServletRequest.getParameter(等等),但是这些方法似乎同时具有GET 和 POST参数。是否有一种方法可以只获取其中一个,而无需自己解析URL或请求正文?如果不是,是否存在优先值规则覆盖哪些值(例如POST参数始终覆

  • 问题内容: 我有一个带有一些GET参数的URL,如下所示: 我需要获得的全部价值。我尝试读取该URL,但只有。如何使用JavaScript执行此操作? 问题答案: JavaScript 本身 没有内置处理查询字符串参数的内容。 在(现代)浏览器中运行的代码可以使用对象(它是浏览器提供给JS的API的一部分): 对于较旧的浏览器(包括Internet Explorer),您可以使用此polyfill

  • 问题内容: 如何简单地通过JQuery 获取和值? 我想做的是这样的: 问题答案: 对于GET参数,您可以从中获取它们: 对于POST参数,您可以将JSON格式的对象序列化为标记: 在进行此操作(在服务器端执行操作)时,也可以在PHP上收集GET参数: 注意: 您需要PHP 5或更高版本才能使用内置功能。 更新: 这是一个更通用的实现: