Кажется, мой вопрос может быть немного похож на на этот.
У меня есть API в моем API-шлюзе, и я делаю прокси-сервер HTTP до конечной точки, в которой хранятся файлы POST multipart/form-data.
Если я вызываю конечную точку http напрямую (не через шлюз API) - используя почтальон, он работает так, как ожидалось, однако использование конечной точки шлюза API (через почтальон) терпит неудачу.
Я сравнивал оба запроса (через журналы Fiddler и CloudWatch), которые кажутся одинаковыми:
Запрос прямого вызова 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
для отображения нового тела для одного и того же типа содержимого, без везения.
Насколько мне известно, мне нужен только passthrough
этот вызов, поэтому почему он становится немного запутанным - не должно быть необходимости в манипулировании данными/перехвате?
Ошибка, которую я получаю, - это 400 - плохой запрос (жалоба на file
не найдена), но, как вы можете видеть в запросе, это там.
Любые идеи?
ИЗМЕНИТЬ Журналы из CloudWatch на одном POST-сервере APIGateway
Ошибка все еще 400 - файл не найден