API Gateway автоматически проверяет модель ввода?

Я создал простой API в шлюзе API AWS со следующей конечной точкой:

POST /v1/users

В выполнение метода / запрос метода я добавил модель запроса:

введите здесь описание изображения

Схема этой модели выглядит так:

введите здесь описание изображения

Однако, когда я делаю запрос к этой конечной точке с телом json { "foo": "bar" }, он не отклоняет его, и моя лямбда-функция выполняется ...

Итак, почему есть возможность определить схему JSON, если она не используется для проверки запросов?


person user606521    schedule 28.08.2015    source источник


Ответы (3)


Я просто пытаюсь понять это сам, и я вижу, что вы также спросили об этом всего несколько часов назад!

Пока что единственная ссылка, которую я нашел, находится здесь:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings.html

Для типов методов, не являющихся методами GET, разверните «Модели запросов», а для «Тип контента» и «Имя модели» введите тип контента и выберите имя модели, которая преобразует данные, предоставленные вызывающей стороной, в ожидаемый формат.

Кажется, это больше для преобразования, чем для проверки, но не совсем понятно, как это на самом деле работает.

ОБНОВЛЕНИЕ

Я только что заметил эту ветку HackerNews:

https://news.ycombinator.com/item?id=9880683

Один из инженеров AWS ответил там и сказал:

Модели не требуются для валидации. Они просто используются для создания объектов в клиентских SDK.

person RemoteCTO    schedule 28.08.2015
comment
Я также нашел In API Gateway, a model defines the format, also known as the schema or shape, of some data. You create and use models to make it easier to create mapping templates. Because API Gateway is designed to work primarily with JavaScript Object Notation (JSON)-formatted data, API Gateway uses JSON Schema to define the expected schema of the data. в документах, поэтому кажется, что все эти схемы бесполезны (грустно), и лучший способ - это передать данные ... - person user606521; 28.08.2015
comment
Это может быть что-то вроде - они действительно планируют выпустить проверку на основе схемы в качестве функции, но ждут, когда достаточное количество людей попробуют ее использовать / пожалуются на то, что она не работает, - чтобы фактически продолжить ее реализацию. Надеюсь, это скоро станет функцией. - person RemoteCTO; 29.08.2015
comment
Какая трата ресурсов. Проверка на основе моделей была бы для меня причиной номер 1 использовать API Gateway с шаблонами Swagger. Для меня это не имеет особого смысла :( - person zanona; 03.03.2016

Эта функция была выпущена по состоянию на 11.04.2017. См. https://aws.amazon.com/blogs/compute/how-to-remove-boilerplate-validation-logic-in-your-rest-apis-with-amazon-api-gateway-request-validation/

person RyanG    schedule 11.04.2017

В любом случае валидацию входных данных / модели на шлюзе API следует рассматривать только как дополнительный уровень защиты с точки зрения безопасности.

Ваш сервис ДОЛЖЕН всегда проверять входные данные / модели, это не то, что вы можете делегировать!

person Daniel Gartmann    schedule 18.02.2017
comment
Я вижу здесь цитату, но что вы цитируете? - person leafmeal; 18.11.2020