[英]AWS Lambda Chalice app not receiving request payload
我在 Python 中使用 AWS Chalice 創建了一個小的 lambda 函數。 在本地測試時,所有工作都按預期進行,我的測試請求完美無缺。 但是,當運行chalice deploy
然后測試對托管 API 的相同請求時,我收到以下錯誤。
Traceback (most recent call last):
File "/var/task/chalice/app.py", line 1913, in _get_view_function_response
File "/var/task/app.py", line 34, in questions
payload = parse_qs(body)['data'][0]
KeyError: 'data'
app.py如下
# other imports
from urllib import parse_qs
def encode_payload(payload):
'''encodes generic payload'''
return base64.b64encode(pickle.dumps(payload)).decode('utf-8')
def decode_payload(payload):
'''decodes generic payload'''
return pickle.loads(base64.b64decode(payload))
app = Chalice(app_name='markthis-api')
@app.route('/questions', methods=['GET'], content_types=['application/json'])
def questions():
style = app.current_request.query_params['style']
body = app.current_request.raw_body.decode()
payload = parse_qs(body)['data'][0]
img = decode_payload(payload)
stuff = find_questions(img, style)
return {'pickle': encode_payload(stuff)}
測試.py
def api_request(img, style):
url = f'https://api-code-etc.execute-api.eu-west-2.amazonaws.com/api/questions?style={style}'
#url = f'http://localhost:8000/questions?style={style}'
headers = {'Content-Type': 'application/json'}
payload = {'data': encode_payload(img)}
return requests.get(url, data=payload, headers=headers)
我是 AWS 和 Chalice 的新手,不知道是什么導致了這個問題。 API 有一個返回{'hello': 'world'}
另一個端點 '/'。 這在部署時工作正常。
非常感謝任何幫助
當 Content-Type 是“application-json”時,首選方法是使用.json_body
。 代替;
body = app.current_request.raw_body.decode()
這樣做可能會解決問題:
body = app.current_request.json_body
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.