Я хочу просто создать очень простую лямбда-функцию, чтобы продемонстрировать, как это делается, давайте начнем с изменения вывода. Я уже создал лямбда-функцию.
Создание лямбда-функции
Вы используете лямбда-функцию для бэкенда вашего API. Lambda выполняет ваш код только при необходимости и автоматически масштабируется — от нескольких запросов в день до тысяч в секунду.
Лямбда-функции и лямбда-слои Ознакомьтесь с полной историей, прежде чем продолжить
Я собираюсь создать некоторый объект JSON, который будет моим ответом, и давайте предположим, что мой объект JSON — это некий студент, так. У меня есть ID, имя и email, любые другие дополнительные данные, которые меня интересуют для студента, так что я скажу, что есть ID, который будет числовым, имя, которое будет строкой, email, возраст, вес, что должно быть хорошо. Так что это мой ответ, я создаю объект, который имеет некоторые пары ключ-значение и сохраняю лямбда-функцию.
exports.handler = async (event) => {
const response = {
"id": 1,
"name": "joe bloN",
"email": "m.shakeel0581@gmial.com",
"age": 44,
"weight": 258,
}
return response;
};
Вот код лямбда-функции, обновите лямбда-функцию с вышеуказанным кодом и нажмите кнопку deploy.
Подключение лямбда-функции к API-шлюзу
Теперь я хочу подключить эту лямбда-функцию к API-шлюзу, чтобы я мог получить доступ к этой функции через интернет посредством API, поэтому, возможно, я хочу написать JavaScript-приложение, которое будет подключаться к этому URL. Для этого я перейду в раздел API и создам RESTful API.
Я уже создал и настроил RESTful API в моем предыдущем материале. Ознакомьтесь с полным текстом, прежде чем продолжить
Итак, откройте ‘sample-Api’ из API Gateway, который был создан выше. Сейчас мы ничего не делаем с этим, чтобы изменить наши данные, но я могу протестировать это.
Выбираем метод POST и переходим на страницу тестирования метода.
Итак, если я просто нажму на тест. Я хочу увидеть возвращаемое значение. Я могу нажать на test, если нет параметров, и вы заметите, что если я проверю это, вы увидите, что я получу объект студента, который я создал в лямбде.
Итак, пара моментов об этом конвейере. Верхние два поля предназначены для запроса, по мере поступления запроса в методе запроса я могу выполнять проверку, например, передали ли вы JSON веб-токен для авторизации или передали ли вы ключ API, или если вы вставляете новую запись.
В интеграционном ответе, а затем в ответе метода будет информация о ваших запросах и заголовках ответа, если мы собираемся включить ядра, которые представляют собой кросс-оригинальный обмен ресурсами, чтобы мы могли получить доступ к нашему API с удаленных доменов.
Так что все эти различные фильтры или ячейки установлены не просто так.
Модели
В шлюзе API есть раздел под названием модели. Я уже рассказывал о моделях в своем последнем материале.
Вы можете ознакомиться с разделом modal в этой статье здесь.
Я создаю restful api и у меня будут различные HTTP глаголы Я могу получать студентов Я могу вставлять студентов Я могу обновлять студентов Я могу удалять студентов Мне нужно знать, как выглядит студент Я знаю, как выглядит студент, потому что я создал его на лямбде У него есть ID Имя, фамилия, email и вес агента Так что это то, что я хотел найти как объект студента, но затем я хочу уточнить Я бы утверждал, что ID — это число, имя — строка, email — строка, возраст — число, а вес — число. Так что я хочу уточнить, что такое студент. Я хочу дать определение, сказав, что вот свойства, которые составляют студента, и эти свойства относятся к определенным типам данных. Если я хочу сделать шапку, я сделаю это в модели, так что я перехожу к модели.
Я создам модель. Моя модель будет студент, а тип содержимого будет application/JSON. Имя модели обязательно, тип содержимого обязательно, описание не обязательно, но я просто вставлю общее описание, а затем я вставлю определение схемы, которое я взял из рекламы Amazon, и просто создам модель.
{
"$schema": "https://json-schema.org/draft-04/schema",
"title": "MATCDemoStudentOutputModel",
"type": "object",
"properties": {
"id": { "type": "number" },
"name": { "type": "string" },
"email": { "type": "string"},
"age": { "type": "number" },
"weight": { "type": "number" }
}
}
Теперь я собираюсь интегрировать схему модели в интеграционный ответ.
Выберите Integration Response из POST — Method Execution.
Я войду в этот шаблон отображения и затем нажму на Add mapping template.
Добавьте Content-Type application/json и нажмите на значок галочки, чтобы добавить.
Теперь я могу выбрать, что модель — это студент. Если я выберу эту модель в качестве шаблона, он создаст мне фиктивные данные и скажет, что вот свойства, о которых я знаю для студента, вот что должно быть их данными.
мы не делаем никаких изменений, я просто говорю, что на основе модели у меня есть некоторые фиктивные данные, если я сохраню их прямо сейчас и вернусь назад, я хочу проверить, работает ли это. Помните, я собираюсь сделать запрос, который все сделал за меня, вот что делает тест Я оказываюсь в конечной точке моей лямбды, и раньше то, что происходило, это как возвращение студента, который выглядел как это Это то, что определено в лямбде это поддельный студент теперь, когда я определил мой шаблон отображения в моем интеграционном ответе. Я сказал: «Нет, это не то, как будут выглядеть данные, я хочу использовать фиктивные данные». Я как бы игнорирую ответ от lambda, так как эти значения были жестко закодированы pi и foo для имени и email. Теперь, если я протестирую это, вы заметите, что я получу данные из ответа интеграции, а не фиктивные данные.
Итак, мы можем подойти немного ближе, поэтому, если я вернусь в свой шаблон отображения, давайте предположим, что возраст и вес являются чувствительными, так что мы не хотим отправлять эту информацию. Я просто не буду включать ее в свой шаблон. Я знаю, какой была модель, я знаю, что модель включала вес агента. Я не хочу, чтобы люди, которые будут использовать мой API, видели эту информацию, поэтому я изменил свой шаблон отображения и теперь сохраняю его.
Теперь, если я вернусь и проверю его снова, вы заметите, что возраст и вес удалены, у него нет данных, которые нам нужны.
Они будут правы, у него есть жестко закодированные данные для ID, имени и email, как я, вероятно, хочу получить эту информацию из моей лямбда-функции, я просто хочу убрать переменные, которые я не хочу, чтобы мои потребители API видели, это так честно.
Так что это Джо Блоу это данные, предполагающие, что Джо Блоу — настоящий студент, но я хочу, чтобы его возраст и вес были удалены. Так что если я вернусь к моему интеграционному ответу, я получу его с помощью этого языка шаблонов. Так что для ID я получу ID, используя мою переменную input root, а input root говорит о корневом элементе моего ответа, так что корневой элемент моего JSON-ответа. JSON-ответа, так что корень входа — это действительно этот объект, так что я хочу ID корня входа Dot и здесь я хочу имя корня входа и здесь я хочу email корня входа Окей, так что я говорю, что из моего ответа, который я получил обратно от лямбды, у меня есть переменная под названием корень входа как, которая ссылается на этот корневой элемент, который был возвращен, и теперь я говорю, выберите отдельные компоненты, чтобы я мог построить объект, который выглядит так
Теперь, если я вернусь и проверю это, я намеренно окей, вот шаблон отображения.
Так что я знаю, что изначально я начал со студента, у которого есть электронная почта, возможно, мое клиентское приложение ожидает, что это будет адрес электронной почты.
Предположим, что я не хочу возвращать электронную почту конечному пользователю, я хочу возвращать адрес электронной почты, я могу создать новое свойство.
Хорошо, теперь я возвращаюсь назад и тестирую его, вы видите, что мой выход — это адрес электронной почты Все эти изменения великолепны Я встроил все эти изменения в мой API-шлюз.
Если мы хотим изменить форму данных, мы будем в разделе ресурсов, а затем конкретный метод в интеграционном ответе, где мы будем изменять наши данные.