【发布时间】:2019-10-17 03:36:56
【问题描述】:
当尝试使用 botocore.vendored 请求从 lambda 发出请求时,我发现我的查询字符串被截断了。
我尝试将其构建为字符串、dict,甚至尝试构建一个编码的 url,但它们似乎都在第一个查询参数之后被截断
import base64
import os
import traceback
from urllib.parse import urlencode
from botocore.vendored import requests
ORIGIN = os.environ.get('ORIGIN')
def api_proxy(event, context):
if event['queryStringParameters']:
myParams = urlencode(event['queryStringParameters'],'utf-8')
url = ORIGIN + event['path']
print("URL: " + url)
print("Params: " + myParams)
try:
if myParams:
dataRequest = requests.get(url, params=myParams)
else:
dataRequest = requests.get(url)
print("Requested URL: " + dataRequest.url)
except:
traceback.print_exc()
我正在打印该过程的三个不同部分,这就是我得到的结果:
URL: https://{my_domain}/premium/data/DefinedImage/png
Params: minY=47.00&minX=-15.00&maxY=61.00&maxX=5.00&width=1000&RUN=2019-05-30T09%3A00%3A00Z&styles=&FORECAST=%2B0&height=1200
Requested URL: https://{my_domain}/premium/data/DefinedImage/png?minY=47.00
我希望请求的 URL 是最后包含所有参数的完整 URL,但 request.get 似乎在第一个&符号处截断了我的 URL。
【问题讨论】:
-
myParams应该是字典 -
我试过了。 event['queryStringParameters'] 是一个字典,我最初是通过它传递的。那是我第一次遇到问题的地方,上面是我解决问题的地方。
标签: python python-3.x amazon-web-services aws-lambda python-requests