API Gateway автоматически проверяет модель ввода?
Я создал простой API в шлюзе API AWS со следующей конечной точкой:
POST /v1/users
В запросе выполнения метода/методе я добавил модель запроса:
![введите описание изображения здесь]()
Эта модельная схема выглядит следующим образом:
![введите описание изображения здесь]()
Однако, когда я делаю запрос к этой конечной точке с помощью json body { "foo": "bar" }
, он не отклоняет ее и не выполняет мою лямбда-функцию...
Итак, почему существует возможность определить схему JSON, если она не используется для проверки запросов?
Ответы
Ответ 1
Просто пытаясь понять это сам, и я вижу, что вы только что попросили это несколько часов назад!
Пока единственная ссылка, которую я нашел, находится здесь:
http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings.html
Для типов методов, отличных от GET, разверните Модели запросов и для типа содержимого и имени модели введите тип содержимого и выберите имя модели, которая преобразует данные, предоставленные вызывающим абонентом, в ожидаемый формат.
Похоже, что это больше для преобразования, чем валидация, но не особо ясно, как это работает.
UPDATE
Я только что заметил эту ветку HackerNews:
https://news.ycombinator.com/item?id=9880683
Один из инженеров AWS ответил там и сказал:
Модели не требуются для проверки. Они просто используются для генерации объектов в клиентских SDK.
Ответ 2
Эта функция была выпущена по состоянию на 04/11/2017. См. https://aws.amazon.com/blogs/compute/how-to-remove-boilerplate-validation-logic-in-your-rest-apis-with-amazon-api-gateway-request-validation/
Ответ 3
В любом случае подтверждение ввода/модели на шлюзе API должно рассматриваться только как дополнительный уровень защиты с точки зрения безопасности.
Ваш сервис ДОЛЖЕН всегда проверять входы/модели, это не что-то вы можете делегировать!