Конфигурация REST для адаптера под формат CloudEvent#

Данный раздел применим для роли Администратор.

Предусловия#

Не требуются.

Последовательность выполнения#

Адаптер EVTA под формат CloudEvent поддерживает работу с помощью REST взаимодействия. Если в конфигурационном файле adapter.conf в поле server: type установлено rest, то адаптер EVTA позволяет обращаться извне к брокерам сообщений при помощи REST взаимодействия соответственно.

Имеется 3 типа запросов POST:

  • запрос на публикацию;

  • запрос на создание вебхука;

  • запрос на удаление вебхука.

1. Пример запроса на публикацию:

curl -X POST  http://localhost:8080/publish -H "Content-Type: application/json" -H "ce-id: 123" -H "ce-source: ru.sbt.ss.event" -H "ce-type: ru.sbt.ss.event" -H "ce-specversion: 1.0" -d "test"

Заголовки конвертируются в поля CloudEvent:

  • ce-id — идентификатор события (CloudEvents ID);

  • ce-source — источник события;

  • ce-type — тип события;

  • ce-specversion — версия спецификации CloudEvents, используемой для формирования сообщений.

Тело запроса конвертируется в поле data формата CloudEvent.

2. Пример запроса на создание вебхука:

curl -X POST  http://localhost:8080/subscribe -H "Content-Type: application/json" -d '{"source":"ru.sbt.ss.event","url":"http://localhost:1234/test","name":"test"}'

Тело запроса конвертируется в поле data формата CloudEvent с настройками:

  • source — источник события (настройки по этому ключу берутся из блока message конфигурационного файла *.conf);

  • url — адрес, куда будут отправляться события (настройки по этому ключу берутся из блока webhook конфигурационного файла *.conf);

  • name — имя создаваемого вебхука.

Пример сообщения в JSON-формате:

{
    "source": "источник события",
    "url": "адрес, куда будут отправляться события",
    "name": "имя создаваемого вебхука"
}

3. Пример запроса на удаление вебхука:

curl -X POST  http://localhost:8080/unsubscribe -H "Content-Type: application/json" -d '{"name":"test"}'

Тело запроса конвертируется в поле data формата CloudEvent с настройкой:

  • name — имя удаляемого вебхука.

Пример сообщения в JSON-формате:

{
    "name": "имя удаляемого вебхука"
}

Возвращаемые статусы для REST#

Вид статуса

Код

Значение

Статус

Описание

Общие статусы

405

MethodNotAllowed

Метод отличен от POST

500

InternalServerError

Любая другая ошибка

В теле сообщение Failure during request <uri>: <error message>

publish

201

Created

Корректно

В теле сообщение Message published

500

InternalServerError

Любая другая ошибка

В теле сообщение Message wasn't published because <error message>

400

BadRequest

Для источника отсутствуют настройки транспорта

В теле сообщение Message wasn't published because transport settings for source is absent

403

Forbidden

В запросе отсутствует memberId

В теле сообщение Message wasn't published because memberId wasn't set

403

Forbidden

Отсутствие прав на публикацию

В теле сообщение Message wasn't published because client with memberId doesn't have rights to publish

Создание вебхука (subscribe)

201

Created

Корректно

В теле сообщение Webhook created

500

InternalServerError

Любая другая ошибка

В теле сообщение Webhook wasn't created because <error message>

403

Forbidden

В запросе отсутствует memberId

В теле сообщение Webhook wasn't created because memberId wasn't set

403

Forbidden

Отсутствие прав на подписку

В теле сообщение Webhook wasn't created because client with memberId doesn't have rights to subscribe

400

BadRequest

Для источника отсутствуют настройки транспорта

В теле сообщение Webhook wasn't created because transport settings for source is absent

400

BadRequest

Ошибка при создании вебхука

В теле сообщение Webhook wasn't created because <error message>

Удаление вебхука (unsubscribe)

200

OK

Корректно

В теле сообщение Webhook stopped

500

InternalServerError

Любая другая ошибка

В теле сообщение Webhook wasn't stopped because <error message>

403

Forbidden

В запросе отсутствует memberId

В теле сообщение Webhook wasn't stopped because memberId wasn't set

403

Forbidden

Отсутствие прав

В теле сообщение Webhook wasn't stopped because client with memberId doesn't have rights to unsubscribe

400

BadRequest

Неизвестный вебхук

В теле сообщение Unknown webhook

Правила эксплуатации#

Не требуется.

Результат#

Конфигурация REST для адаптера под формат CloudEvent настроена.