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, уникальность которого гарантируется Сервером.
|
