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

python将querystring参数传递到API网关

戚良弼
2023-03-14

我正在尝试将API网关与Lambda代理集成,

API服务器接收带有以下参数的请求,即邮政编码和住所

https://api.domain.com/getAddressproxy?postcode=XX2YZ&house=123
https://xxxxxxxxxx.execute-api.eu-west-1.amazonaws.com/Test/getaddressproxy?postcode=XX2YZ&house=123

代码:

from __future__ import print_function

import json
import urllib2
import ssl

print('Loading function')

target_server = "https://api.domain.com"

def lambda_handler(event, context):
    print("Got event\n" + json.dumps(event, indent=2))

    ctx = ssl.create_default_context()
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE

    print("Event here: ")
    print(event['path'])
    print(event["queryStringParameters"])

    req = urllib2.Request(target_server + event['path'])

    if event['body']:
        req.add_data(event['body'])

    # Copy only some headers
    copy_headers = ('Accept', 'Content-Type')

    for h in copy_headers:
        if h in event['headers']:
            req.add_header(h, event['headers'][h])

    out = {}

    try:
        resp = urllib2.urlopen(req, context=ctx)
        out['statusCode'] = resp.getcode()
        out['body'] = resp.read()

    except urllib2.HTTPError as e:

        out['statusCode'] = e.getcode()
        out['body'] = e.read()

    return out

共有1个答案

凌俊语
2023-03-14

事件[“QueryStringParameters”]是一个字典,如果API网关传递了一个,则None。将其转换为查询字符串并附加到请求URL。

...
import urllib
...

qs = urllib.urlencode(event["queryStringParameters"] or {})
req = urllib2.Request(
        ''.join(
          (target_server, event['path'], '?', qs)
        )
      )
 类似资料:
  • 但是,我如何将我预定义的查询字符串参数传递到这个生成的API类中呢? 我也尝试过使用模型,但是我也没有看到将模型数据传递到iOS SDK中的方法。

  • 例如,如果我们想使用 或 如何将这两个示例作为参数传递给Lambda函数? 我在文档中看到了一些关于设置“Mapped From”的内容,但我在API网关控制台中找不到该设置。 用于在“方法请求”页中定义的名为的路径参数。 用于在“方法请求”页中定义的名为的查询字符串参数。 尽管我定义了一个查询字符串,但我没有看到这两个选项中的任何一个。

  • 问题内容: 通常,我会使用一个JavaScript文件,该文件需要在网页中定义某些变量。 所以代码是这样的: 但是我想做的是: 我尝试了不同的方法,最好的方法是解析查询字符串,如下所示: 然后搜索我的价值观。 我想知道是否还有另一种方法可以执行此操作而无需构建函数来解析我的字符串。 你们都知道其他方法吗? 问题答案: 如果可能,我建议不要使用全局变量。使用名称空间和OOP将参数传递给对象。 此代码

  • 问题内容: 我想将值传递给javascript。如果可能的话,我该怎么办?如何在后备bean中接收它们? 问题答案:

  • 问题内容: 我们已经设置了一些参数来在Jenkins中执行构建(使用简单的“参数化构建”设置)。作业被设置为Maven测试。有没有办法以编程方式将这些参数传递到我们的Java代码中?我们需要基于通过Jenkins设置的参数来执行某些更新功能。 问题答案: 是的,您可以通过Maven执行将Jenkins参数传递给Java代码,如下所示: 请注意, $ JOB_PARAM_1 将捕获Jenkins上设