Запуск интеграции на Node.js Express

Эта инструкция поможет с нуля настроить простейшую тестовую интеграцию на языке JavaScript для работы с уведомлениями. Вы сможете проверить, обрабатывает ли ваш сервер уведомление.

Вам понадобится Node.js и Java не ниже 11-й версии, а также Curl для проверки работы сервера

Установите их заранее. Как установить:

Скачайте OpenAPI-спефицикацию

  1. Откройте папку, в которой хотите сохранить спецификацию. В этой инструкции она будет обозначаться как <project_directory>.

  2. Запустите в ней командную строку.

  3. Напишите команду:

    git clone https://github.com/yandex-market/yandex-market-notification-api.git
    
  1. Скачайте спецификацию сервиса уведомлений Маркета с GitHub.
  2. Распакуйте архив в папку, в которой хотите сохранить спецификацию. В этой инструкции она будет обозначаться как <project_directory>.

Сгенерируйте сервер

  1. Откройте папку yandex-market-notification-api, которая появилась на предыдущем шаге.

  2. Запустите в ней командную строку.

  3. Напишите команду:

    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.

Реализуйте обработку уведомления

  1. Откройте в IDE директорию со сгенерированным кодом.

  2. В 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,
    };
    
  3. В консоль напишите node index.js. Запустится сервер.

  4. В отдельном окне терминала выполните тестовый запрос к вашему серверу:

    curl -X POST -L 'http://localhost:8080/notification' -H 'Content-Type: application/json' -d '{"notificationType": "PING", "time": "2025-01-01T00:00:00.000Z"}'
    
  5. В ответе вы увидите {"name":"shop","time":"2025-02-28T12:32:01.918Z","version":"1.0.0"}, а в логах сервера сообщение PING notification processed.