Как проверить тело запроса | Amazon API Gateway

На этой неделе я узнал о проверке полезной нагрузки или тела запроса в AWS API Gateway и хочу поделиться этим. На прошлой неделе мы узнали, как создавать API с помощью службы AWS API Gateway. Здесь вы можете прочитать об этом
В этой сессии мы узнаем о том, как проверить тело или полезную нагрузку в AWS API. Мы уже настроили шлюз API, и мы просто сосредоточимся на проверке тела API, как можно активировать проверку тела и как она работает.

Обзор базовой проверки запроса в шлюзе API

Валидация запроса используется для того, чтобы убедиться, что входящее сообщение запроса правильно отформатировано и содержит нужные атрибуты. API Gateway может выполнять базовую валидацию. Это позволяет вам, разработчику API, сосредоточиться на глубокой проверке приложения в бэкенде. При базовой проверке API Gateway проверяет одно или оба из следующих условий:

  1. Необходимые параметры запроса в URI, строке запроса и заголовках входящего запроса включены и не являются пустыми.
  2. Полезная нагрузка запроса соответствует настроенной модели запроса 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
    }
  ]
}
Войти в полноэкранный режим Выход из полноэкранного режима

Подробно о моделях вы можете прочитать здесь

Создание модели

  1. Войдите в консоль API Gateway по адресу https://console.aws.amazon.com/apigateway.

  2. Выберите REST API. В моем случае я выберу sample-Api, который я создал в прошлой статье. см. здесь

  3. Выберите слева вкладку Models и выберите Create.

  1. Для Model Name введите имя модели ‘item’.

  2. Для Content Type введите тип содержимого модели (например, application/json для JSON).

  3. (Необязательно) Для описания модели введите описание модели.

  4. Для схемы модели введите схему модели.

{
    "$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"]

}
Войти в полноэкранный режим Выход из полноэкранного режима
  1. Выберите Создать модель.

Проверка запроса с помощью консоли API Gateway с моделью

Консоль API Gateway позволяет настроить базовую проверку запроса на метод с помощью одного из трех валидаторов:

  • Validate body: Это валидатор только тела.
  • Проверять параметры строки запроса и заголовки: Это валидатор только параметров.

Валидировать тело, параметры строки запроса и заголовки: Этот валидатор предназначен для проверки как тела, так и параметров.

Чтобы включить валидатор запроса для метода

  1. Выберите вкладку ресурсов, затем выберите метод ресурса ‘POST’.

  1. Выберите метод Request.

  1. Выберите значок карандаша Request Validator в разделе Settings.

  1. Из выпадающего списка выберите Validate body. Затем выберите значок галочки, чтобы сохранить свой выбор.

  1. Выберите тело запроса и выберите добавить модель.

  1. Теперь добавьте тип содержимого ‘application/json’ и имя модели ‘item’ из выпадающего списка под именем модели. Затем выберите значок с галочкой, чтобы сохранить свой выбор.

  1. Последний шаг для развертывания API на стадии образца. Выберите кнопку Actions и выберите Deploy API.

  1. Появится всплывающее окно, выберите ‘smapleStage’ из выпадающего списка Deployment stage и Deploy.

Как это работает

Нам нужно проверить, что проверка тела запроса работает нормально с остальным API. Для этого нам нужно использовать postman для генерации почтового запроса с телом запроса

Протестируйте REST API в postman, чтобы убедиться, что валидация тела запроса работает с остальным API.

  1. Выберите POST-запрос, установите заголовок ‘Content-Type’ со значением ‘application/json’ и тело запроса.

  1. Установите тело запроса с фиктивными данными и нажмите кнопку отправки.


Вы можете видеть, что наша функция Lambda вызвана и ее ответ возвращен.

Теперь измените тело запроса и удалите поле any и его значение. Нажмите кнопку отправить. На этот раз вы можете увидеть ошибку возврата «Invalid request body».

Оцените статью
devanswers.ru
Добавить комментарий