У меня есть сценарий использования, когда мне нужно загрузить CSV-файл с помощью AngularJS App через AWS API Gateway, в мое внутреннее приложение (работает в Elasti c Beanstalk - Django Python REST App).
- Шлюз API интегрирован с AWS Cognito.
- Бэкэнд-приложение ожидает данные формы с CSV-загрузками.
Я создал API-шлюз с ресурсом типа / main_resource / upload_csv с методом POST.
В настоящее время я тестирую это с примером Javascript приложения, которое создает AJAX вызов URL-адреса шлюза API. Ниже приведен AJAX вызов
$.ajax({
method: 'POST',
url: 'https://47483nvh39.execute-api.ap-south-1.amazonaws.com/mystage/main_resource/upload_csv',
headers: {
Authorization: authToken,
"Accept": "*/*",
"Content-Type": "multipart/form-data"
},
contentType: 'multipart/form-data',
data: formData,
dataType: "json",
processData: false,
success: completeRequest,
error: function ajaxError(jqXHR, textStatus, errorThrown) {
console.error('Error: ', textStatus, ', Details: ', errorThrown);
console.error('Response: ', jqXHR.responseText);
console.log("Status: " + jqXHR.status);
if (jqXHR.status == 401 || jqXHR.status == 403) {
//redirectToLogin();
} else {
alert('An error occured:\n' + jqXHR.responseText);
}
}
});
Важные настройки выполняются в методе POST ресурса API Gateway
- Шлюз API -> Настройки -> Двоичный носитель Типы - добавлены 'multipart / form-data
- Добавлены заголовки в "Запрос метода" - "Тип контента" и "Принять"
- Добавлены заголовки в "Запрос интеграции" - "Тип контента" "and" Accept "
- Добавлен тип содержимого в тело запроса" Method Request "как" multipart / form-data "
- В" Запрос на интеграцию "добавлен multipart / form-data в" Mapping Templates " «
После выполнения всех этих настроек я получаю ответ 500« Внутренняя ошибка сервера ». Я просмотрел журналы приложения Django и обнаружил, что внутренний URL-адрес не доступен.
Любая помощь, связанная с этим, приветствуется
Спасибо
Avina sh Дешмух.