2016-07-11 3 views
1

Каков стандартный подход к возврату ответа RPC JSON при частичном отказе? Похоже, что both 'result' and 'error' cannot both be set.JSON RPC 2.0: ответ, который является частью ошибки и результатом части

У нас есть случай, когда сервер агрегирует результаты на нескольких сайтах, на которых работает тот же API. Причина агрегации связана с Same-Origin Policy. Каждый сайт может отвечать либо результатом, либо ошибкой. Если кто-то отвечает результатом, а другие с ошибкой, то, что сервер агрегации возвращается как полный ответ на исходный вызывающий?

a =(method)=> b 
       b =(method)=> c 
       b =(method)=> d 
       b <=(error)== c 
       b <=(result)= d 
a <=(??????)= b 

Это лучше, чтобы просто вернуть два ответа (один с любыми ошибками и без «ид» и один с результатами и «ид» предполагая, что это последний ответ)?

ответ

0

Ответственность сервера заключается в объединении и возврате результатов, которые могут содержать ошибки. Это то, чего ожидает ваш клиент.

--> {"jsonrpc": "2.0", "method": "getResults", "id": 1} 

<-- {"jsonrpc": "2.0", "result": [ "success", "error" ], "id": 1} 

Вы должны вернуть сообщение об ошибке, если сам сервер не смог обработать запрос по любой непредвиденной причине.

+0

Это похоже на исходный вопрос, но я должен сказать, что есть что-то желаемое, независимо от того, что угодно. Что делать, если сервер «C» реагирует значительно быстрее, чем сервер «D»? Должен ли клиент «А» действительно заставлять ждать дополнительного времени для полного результата? –

+0

@GregSmethells Да. JSON-RPC имеет один ответ для одного запроса. Существует некоторое обсуждение [уведомление о ходе выполнения] (https://groups.google.com/forum/#!topic/json-rpc/8Ea6qu_u_tU), но пока недоступно. – Rodris