У меня class BadRequest(Exception): pass
в моей лямбда-функции.
Я хочу raise BadRequest("Invalid request params")
, чтобы API возвращал ответ с кодом состояния 400 и телом { "message": "Invalid request params" }
(или эквивалентным).
Однако простое выполнение этого возвращает ответ с кодом состояния 200 (о нет!) И телом.
{
"errorMessage": "Invalid request params",
"errorType": "BadRequest",
"stackTrace": <my application code that the user shouldnt see>
}
После поиска в Интернете, похоже, у меня есть 3 варианта:
1) chalice
2) Используйте интеграционный ответ и ответ метода, чтобы проанализировать эту ошибку и получить лучший ответ. Я бы использовал регулярное выражение типа [BadRequest].*
и вставлял префикс, когда я генерирую исключение (не очень элегантный IMO).
3) Используйте Step Functions, чтобы создать представление API с отслеживанием состояния. Это кажется немного утомительным, потому что мне нужно выучить ASL, а я не знаю глухих. -.-
В какую кроличью нору мне спуститься и почему?