Запуск интеграции на Node.js Express
Эта инструкция поможет с нуля настроить простейшую тестовую интеграцию на языке JavaScript для работы с уведомлениями. Вы сможете проверить, обрабатывает ли ваш сервер уведомление.
Вам понадобится Node.js и Java не ниже 11-й версии, а также Curl для проверки работы сервера
Скачайте OpenAPI-спефицикацию
-
Откройте папку, в которой хотите сохранить спецификацию. В этой инструкции она будет обозначаться как
<project_directory>
. -
Запустите в ней командную строку.
-
Напишите команду:
git clone https://github.com/yandex-market/yandex-market-notification-api.git
- Скачайте спецификацию сервиса уведомлений Маркета с GitHub.
- Распакуйте архив в папку, в которой хотите сохранить спецификацию. В этой инструкции она будет обозначаться как
<project_directory>
.
Сгенерируйте сервер
-
Откройте папку
yandex-market-notification-api
, которая появилась на предыдущем шаге. -
Запустите в ней командную строку.
-
Напишите команду:
npx @openapitools/openapi-generator-cli generate -i <path_to_openapi.yaml> -g nodejs-express-server -o <output_path>
В качестве output path укажите папку, в которой будет ваш проект.
Если openapitools пока не установлено, согласитесь на установку. В папке output path появятся файлы клиента.
Пример
Допустим, вы скачали архив и распаковали его. Спецификация лежит в папке
<project_directory>/yandex-market-notification-api
.Вы хотите разместить проект в папке
<project_directory>/market-integration
.1. Откройте папку
<project_directory>/yandex-market-notification-api
.2. Запустите в ней командную строку.
3. В открывшуюся консоль напишите:
``` npx @openapitools/openapi-generator-cli generate -i openapi/openapi.yaml -g javascript -o ../market-integration ```
4. Если появится предложение установить генератор, введите Y и нажмите Enter.
Реализуйте обработку уведомления
-
Откройте в IDE директорию со сгенерированным кодом.
-
В
service/NotificationService.js
находится логика обработки уведомлений. Добавьте туда простой код для обработки уведомления с типомPING
:const Service = require('./Service'); const logger = require('../logger'); const sendNotification = (sendNotificationRequest) => new Promise( async (resolve, reject) => { try { if (sendNotificationRequest.body.notificationType == 'PING') { logger.info("PING notification processed") } // Возвращаем обязательное тело ответа resolve(Service.successResponse({ name: "shop", time: new Date().toISOString(), version: "1.0.0" })); } catch (e) { reject(Service.rejectResponse( e.message || 'Invalid input', e.status || 405, )); } }, ); module.exports = { sendNotification, };
-
В консоль напишите
node index.js
. Запустится сервер. -
В отдельном окне терминала выполните тестовый запрос к вашему серверу:
curl -X POST -L 'http://localhost:8080/notification' -H 'Content-Type: application/json' -d '{"notificationType": "PING", "time": "2025-01-01T00:00:00.000Z"}'
-
В ответе вы увидите
{"name":"shop","time":"2025-02-28T12:32:01.918Z","version":"1.0.0"}
, а в логах сервера сообщениеPING notification processed
.