gpt4 book ai didi

amazon-web-services - API 网关 - POST 多部分/表单数据

转载 作者:行者123 更新时间:2023-12-03 10:15:17 26 4
gpt4 key购买 nike

看来我的问题可能有点类似 to this one .
我的 API Gateway 中有一个 API并且我正在做一个 HTTP 代理到一个端点,POST 的 multipart/form-data文件。
如果我直接调用 HTTP 端点(而不是通过 API gateway ) - 使用 postman ,它按预期工作,但是,使用 API 网关端点(通过 postman)失败。
我比较了两个似乎相同的请求(通过 fiddlerCloudWatch 日志):
请求直接 API 调用(工作):

POST https://domainname/api/v1/documents HTTP/1.1
Host: api.service
Connection: keep-alive
Content-Length: 202
Authorization: AuthToken
Postman-Token: a75869d6-1d64-6b9f-513d-a80ac192c8e1
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
docMetaInfo: some extra data needed
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryB85rsPlMffA2fziS
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8

------WebKitFormBoundaryB85rsPlMffA2fziS
Content-Disposition: form-data; name=""; filename="Test.txt"
Content-Type: text/plain

This is a test Text File
------WebKitFormBoundaryB85rsPlMffA2fziS--
来自 API 网关的请求(不工作):
POST https://GATEWAY_domainname/api/v1/documents HTTP/1.1
Host: api-Gateway.service
Connection: keep-alive
Content-Length: 202
Authorization: AuthToken
Postman-Token: e25536fa-3dfa-ddcb-8ca6-3f3552d2bc40
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
docMetaInfo: some extra data needed
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarybX9MyWBsuLGm6QIC

x-api-key: *********************
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8

------WebKitFormBoundarybX9MyWBsuLGm6QIC
Content-Disposition: form-data; name=""; filename="Test.txt"
Content-Type: text/plain

This is a test Text File
------WebKitFormBoundarybX9MyWBsuLGm6QIC--
我从网关端尝试了一些东西,包括更改 Integration Request为相同的内容类型映射一个新的 body ,没有运气。
据我所知,我应该只需要 passthrough这个调用,因此为什么它变得有点困惑 - 应该不需要数据操作/拦截?
我得到的错误是 400 - 错误的请求(提示没有找到 file),但正如您在请求中看到的那样,它就在那里。
有任何想法吗?
编辑
在同一 APIGateway POST 上来自 CloudWatch 的日志
enter image description here
错误仍然是 400 - 没有找到文件

最佳答案

API Gateway 目前不支持多部分表单数据。这正在考虑为 future 的发展。同时,您需要修改您的客户端以使用多个请求或一个单一的部分请求。

更新 :API 网关现在支持二进制负载。只需定义 multipart/form-data作为 API 的二进制媒体类型,并将有效负载直接代理到 Lambda 函数。从那里您可以解析正文以获取文件内容。应该有可用的库来帮助解析多部分主体(例如 Node.js 中的 parse-multipart)。

关于amazon-web-services - API 网关 - POST 多部分/表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41756190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com