Cumulocity: два шаблона ответов для c8y_Restart, один с и без <BASE>, почему? - PullRequest
0 голосов
/ 21 декабря 2018

Я внедряю клиент для подключения к Cloud of Things, который использует Cumulocity.В их примере реализации у них есть коллекция шаблонов.Но документация плохая.Я нашел два шаблона ответов для c8y_Restart, но не вижу необходимости в этом.

Я уже отправил запросы на рестарт из Cumulocity и ответил на них своей реализацией.Статус может быть успешно установлен с помощью шаблона 530. С помощью шаблона 501 я запрашиваю все ожидающие операции.Но все ответы приходят с ответом 511 и ни одного на 521.

Это шаблоны - пожалуйста, игнорируйте экранированные "и новые строки - они из кода C ++

"10,501,GET,/devicecontrol/operations?deviceId=%%&nocache=true&status=%%,,application/vnd.com.nsn.cumulocity.operationCollection+json,%%,UNSIGNED STRING,\n"
"11,511,$.operations,\"$.c8y_Restart\",\"$.id\",\"$.description\"\n"
"11,521,,\"@.c8y_Restart\",\"@.id\",\"@.description\"\n"
"10,530,PUT,/devicecontrol/operations/%%,application/vnd.com.nsn.cumulocity.operation+json,application/vnd.com.nsn.cumulocity.operation+json,%%,UNSIGNED STRING,\"{\"\"status\"\": \"\"%%\"\"}\"\n"

То, что я получаю, эточто $.operations является селектором списка именованных операций родителя. Возвращается поле c8y_Restart id и description.

Документ JSONPath говорит, что @ соответствует текущему объектуКогда шаблон 521 полезен или используется?

1 Ответ

0 голосов
/ 29 декабря 2018

Как правило, для SmartREST 1.0 обычно требуется 2 шаблона ответа для операций.Первый (ваш 511) предназначен для непосредственного запроса операций PENDING.Этот запрос всегда возвращает массив, поэтому вам необходим шаблон с основанием массива ($ .operations) для его циклического прохождения.

Второй шаблон необходим, если вы подписаны на операции в реальном времени.В этом случае операции, которые вы получаете, всегда являются отдельными объектами, поэтому у вас не должно быть $ .operations в этом шаблоне, чтобы он работал.По сути, это ваш шаблон 521, и именно поэтому вы не получите никакого ответа для 521 при запросе операций PENDING.

Я бы порекомендовал избегать использования @ и всегда использовать $.Используя $, вы всегда знаете, что происходит, но использование @ зависит от того, как Cumulocity управляет JsonPath, и это может привести к результатам, которые вы не намеревались.

SmartRest 2.0 для MQTT решает проблему с требованием 2 шаблонов ответов на операцию.

...