3.12.5.1.6.1. Дополнительные поля в запросах и ответах

 
Особенность публикации JSON API в интерфейсе мониторинга: на теги Response и Result может быть подписано несколько подключенных клиентов, и результат запроса, инициированного одним клиентом, получают все подписанные клиенты. Для возможности сопоставления ответа с исходным запросом на клиентской стороне предусмотрен механизм идентификации.
 

Идентификатор запроса reqid

Клиент может указать в запросе, в поле reqid строковый идентификатор запроса, в таком случае Сервер скопирует его в ответ:
 

Запрос

{
// Идентификатор запроса, сгенерированный на стороне клиента
"reqid": "REQUEST_ID_STRING",
 
           // Объект/команда
"object": "...",
"command": "..."
 ...
}
 

Ответ

{
// Идентификатор запроса, переданный клиентом, скопирован сервером
"reqid": "REQUEST_ID_STRING"
...
}
 
Если командой не предусмотрен возврат результата (ни синхронного, ни множественного), и в запросе указано поле reqid, то ответ будет содержать JSON-объект с единственным полем reqid.

Идентификатор множественного результата qid

 
Если по завершении выполнения команды порождён множественный результат, ответ будет содержать его уникальный идентификатор, сгенерированный на стороне Сервера:
 

Ответ на запрос

{
...
/*
Уникальный идентификатор множественного результата, сгенерированный сервером, при регистрации множественного результата в реестре
*/
"qid": "UNIQUE_QUERY_ID"
...
}
Этот идентификатор используется при выборке множественного результата посредством тегов JsonApi/Fetch и JsonApi/Result:
 

Запрос очередной порции результата

{
"object": "query",
"command": "fetch",
"qid": "UNIQUE_QUERY_ID",
"params": {
...
}
}
 

Ответ, содержащий очередную порцию результата

{
"qid": "UNIQUE_QUERY_ID",
"result": {
...
}
}
 
При взаимодействии через теги Fetch и Result нет необходимости использовать reqid, вместо этого можно использовать qid, уникальность которого гарантируется Сервером.