Return python 字符串作为 HTTP 响应的主体
Return python string as the body of HTTP response
我正在使用 AWS Lambda
和 python-2.7
回复 AWS Api Gateway
。我的 lambda 函数应该 return 如下所示的响应,但我正在努力将正确的正文形式放入 JSON 响应中:
return_value = {
"statusCode": 200,
"isBase64Encoded": 'false',
"headers": {"Content-Type": "application/json"},
"body": {payload['note']}
}
payload['note']
的类型是unicode
,所以我不知道在[=18=对面的括号里放什么,因为我是python的新手] 试了很多也搞不明白。我尝试使用以下方法将其转换为字符串:
unicodedata.normalize('NFKD', payload['note']).encode('ascii', 'ignore')
但是也没用
首先,我认为之前将 unicode 字符串转换为 python 字符串是个好主意,因为我不知道您的其余代码是否可以处理 json 中的 unicode。
我认为您的问题与 json 格式有关。如JSON,正文字段应包含键值对。
试试 :
return_value = {
"statusCode": 200,
"isBase64Encoded": 'false',
"headers": {"Content-Type": "application/json"},
"body": {"note": payload['note']}
}
最好先使用标准 object 构建它,然后在 return 时将其转换为 JSON。例如:
# coding=utf-8
import json
def aws_message(payload):
message = dict(statusCode=200,
isBase64Encoded=False,
headers={"Content-Type": "application/json"},
body=payload['note'])
return json.dumps(message)
if __name__=="__main__":
payload = dict(note='something')
print(aws_message(payload))
不幸的是,您会注意到我在消息中构建 headers 时从 long-form dict() 创建切换到 short-hand(这是一个快速的 'n 肮脏的例子).这是输出:
C:\Python37\python.exe C:/dev/scratches/scratch_17.py
{"statusCode": 200, "isBase64Encoded": false, "headers": {"Content-Type": "application/json"}, "body": "something"}
如您所见,以易于理解的方式构建 object,然后让 json 库完成所有转换为correctly-formatted 响应。希望对您有所帮助。
我正在使用 AWS Lambda
和 python-2.7
回复 AWS Api Gateway
。我的 lambda 函数应该 return 如下所示的响应,但我正在努力将正确的正文形式放入 JSON 响应中:
return_value = {
"statusCode": 200,
"isBase64Encoded": 'false',
"headers": {"Content-Type": "application/json"},
"body": {payload['note']}
}
payload['note']
的类型是unicode
,所以我不知道在[=18=对面的括号里放什么,因为我是python的新手] 试了很多也搞不明白。我尝试使用以下方法将其转换为字符串:
unicodedata.normalize('NFKD', payload['note']).encode('ascii', 'ignore')
但是也没用
首先,我认为之前将 unicode 字符串转换为 python 字符串是个好主意,因为我不知道您的其余代码是否可以处理 json 中的 unicode。
我认为您的问题与 json 格式有关。如JSON,正文字段应包含键值对。
试试 :
return_value = {
"statusCode": 200,
"isBase64Encoded": 'false',
"headers": {"Content-Type": "application/json"},
"body": {"note": payload['note']}
}
最好先使用标准 object 构建它,然后在 return 时将其转换为 JSON。例如:
# coding=utf-8
import json
def aws_message(payload):
message = dict(statusCode=200,
isBase64Encoded=False,
headers={"Content-Type": "application/json"},
body=payload['note'])
return json.dumps(message)
if __name__=="__main__":
payload = dict(note='something')
print(aws_message(payload))
不幸的是,您会注意到我在消息中构建 headers 时从 long-form dict() 创建切换到 short-hand(这是一个快速的 'n 肮脏的例子).这是输出:
C:\Python37\python.exe C:/dev/scratches/scratch_17.py
{"statusCode": 200, "isBase64Encoded": false, "headers": {"Content-Type": "application/json"}, "body": "something"}
如您所见,以易于理解的方式构建 object,然后让 json 库完成所有转换为correctly-formatted 响应。希望对您有所帮助。