На этой неделе я узнал о проверке полезной нагрузки или тела запроса в AWS API Gateway и хочу поделиться этим. На прошлой неделе мы узнали, как создавать API с помощью службы AWS API Gateway. Здесь вы можете прочитать об этом
В этой сессии мы узнаем о том, как проверить тело или полезную нагрузку в AWS API. Мы уже настроили шлюз API, и мы просто сосредоточимся на проверке тела API, как можно активировать проверку тела и как она работает.
Обзор базовой проверки запроса в шлюзе API
Валидация запроса используется для того, чтобы убедиться, что входящее сообщение запроса правильно отформатировано и содержит нужные атрибуты. API Gateway может выполнять базовую валидацию. Это позволяет вам, разработчику API, сосредоточиться на глубокой проверке приложения в бэкенде. При базовой проверке API Gateway проверяет одно или оба из следующих условий:
- Необходимые параметры запроса в URI, строке запроса и заголовках входящего запроса включены и не являются пустыми.
- Полезная нагрузка запроса соответствует настроенной модели запроса JSON-схемы метода.
Сначала нам нужно создать модель для настройки запроса схемы JSON. Прежде чем создавать модель, нам необходимо узнать о модели.
Модели
В API Gateway модель определяет структуру данных полезной нагрузки. В API Gateway модели определяются с помощью схемы JSON draft 4.
Следующий объект JSON описывает пример данных, которые описывают запасы фруктов или овощей в отделе продуктов вероятного супермаркета.
Предположим, у нас есть API для управления инвентаризацией одежды в отделе продуктов супермаркета. Когда менеджер запрашивает бэкэнд о текущих запасах, сервер отправляет следующий ответ:
{
"department": "produce",
"categories": [
"jeans",
"shirt"
],
"dress": [
{
"category": "jeans",
"type": "pants",
"price": 1.99,
"quantity": 232
},
{
"category": "jeans",
"type": "casual",
"price": 0.19,
"quantity": 112
},
{
"category": "jeans",
"type": "shorts",
"price": 1.29,
"quantity": 57
}
]
}
Подробно о моделях вы можете прочитать здесь
Создание модели
-
Войдите в консоль API Gateway по адресу https://console.aws.amazon.com/apigateway.
-
Выберите REST API. В моем случае я выберу
sample-Api
, который я создал в прошлой статье. см. здесь -
Выберите слева вкладку Models и выберите Create.
-
Для Model Name введите имя модели ‘item’.
-
Для Content Type введите тип содержимого модели (например, application/json для JSON).
-
(Необязательно) Для описания модели введите описание модели.
-
Для схемы модели введите схему модели.
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title":"Item Schema",
"type": "object",
"properties":{
"ID":{ "type": "number"},
"name":{ "type": "string"},
"price":{ "type": "number"}
},
"required":["ID","name","price"]
}
- Выберите Создать модель.
Проверка запроса с помощью консоли API Gateway с моделью
Консоль API Gateway позволяет настроить базовую проверку запроса на метод с помощью одного из трех валидаторов:
- Validate body: Это валидатор только тела.
- Проверять параметры строки запроса и заголовки: Это валидатор только параметров.
Валидировать тело, параметры строки запроса и заголовки: Этот валидатор предназначен для проверки как тела, так и параметров.
Чтобы включить валидатор запроса для метода
- Выберите вкладку ресурсов, затем выберите метод ресурса ‘POST’.
- Выберите метод Request.
- Выберите значок карандаша Request Validator в разделе Settings.
- Из выпадающего списка выберите Validate body. Затем выберите значок галочки, чтобы сохранить свой выбор.
- Выберите тело запроса и выберите добавить модель.
- Теперь добавьте тип содержимого ‘application/json’ и имя модели ‘item’ из выпадающего списка под именем модели. Затем выберите значок с галочкой, чтобы сохранить свой выбор.
- Последний шаг для развертывания API на стадии образца. Выберите кнопку Actions и выберите Deploy API.
- Появится всплывающее окно, выберите ‘smapleStage’ из выпадающего списка Deployment stage и Deploy.
Как это работает
Нам нужно проверить, что проверка тела запроса работает нормально с остальным API. Для этого нам нужно использовать postman для генерации почтового запроса с телом запроса
Протестируйте REST API в postman, чтобы убедиться, что валидация тела запроса работает с остальным API.
- Выберите POST-запрос, установите заголовок ‘Content-Type’ со значением ‘application/json’ и тело запроса.
- Установите тело запроса с фиктивными данными и нажмите кнопку отправки.
Вы можете видеть, что наша функция Lambda вызвана и ее ответ возвращен.
Теперь измените тело запроса и удалите поле any и его значение. Нажмите кнопку отправить. На этот раз вы можете увидеть ошибку возврата «Invalid request body».