JSON RPC 2.0: ответ, который является частичной ошибкой и частичным результатом
Каков стандартный подход к возвращению ответа JSON RPC при частичном сбое? Похоже, что и "результат", и "ошибка" не могут быть установлены одновременно.
У нас есть случай, когда сервер агрегирует результаты по нескольким сайтам, использующим один и тот же API. Причиной агрегирования является политика одного происхождения. Каждый сайт может ответить либо результатом, либо ошибкой. Если некоторые отвечают с результатом, а другие с ошибкой, то что сервер агрегации возвращает как полный ответ исходному абоненту?
a =(method)=> b
b =(method)=> c
b =(method)=> d
b <=(error)== c
b <=(result)= d
a <=(??????)= b
Лучше ли просто вернуть два ответа (один с любыми ошибками и без идентификатора, а другой с результатами и идентификатором, указывающим, что это последний ответ)?
1 ответ
Обязанность сервера - объединять и возвращать результаты, которые могут содержать ошибки. Это то, что ожидает ваш клиент.
--> {"jsonrpc": "2.0", "method": "getResults", "id": 1}
<-- {"jsonrpc": "2.0", "result": [ "success", "error" ], "id": 1}
Вы должны вернуть ошибку, если сам сервер не смог обработать запрос по любой неожиданной причине.