2016-08-19 3 views
3

Я хочу реализовать службу отдыха, которая принимает объект и возвращает, если объект имеет право на обработку с определенными параметрами. Проблема в том, что в зависимости от того, подходит ли объект или нет, структура ответа очень различна.. В качестве примера, если объект должен быть обработан, он связан с типом обработки и приоритетом. Когда это не подходит, причина для этого возвращается. Какой из самый чистый способ возврата различных структур для одного и того же запроса. Есть три варианта, о которых я мог бы подумать, но не стесняйтесь добавлять дополнительные опции.Самый чистый способ возврата различных структур для одного и того же запроса

Вариант А:
Возврат данных в виде конверта, содержащие в поле, которое структурированные

{ 
    "eligible": bool, 
    "data": { 
     // Data depending on whether elbile or not 
    } 
} 

Вариант B:
Используйте другой код и структура состояния HTTP, JSON, соответственно. Это как-то нечисто, потому что это не ошибка в запросе, а действительный ответ.

Вариант C:
Используйте разные поля для отправки данных в случае допустимого или нет и пусть одно поле будет нулевым.

{ 
    "eligible": bool, 
    "dataEligible": { 
     "processingType": "", 
     "priority": 0 
    } 
    "dataNonEligible": { 
     "reason": "", 
    } 
} 

ответ

1

Я думаю, что это было бы хорошим прецедентом для 422 Status Code. Это еще не официальный ISO, но многие компании (т. Е. Twitter) используют его.

В основном это то, что происходит для вас - ресурс не может быть обработан, хотя сервер понимает запрос и это правильный синтаксис.


Вариант C также выглядит разумным, поэтому используйте тот, который наиболее подходит для ваших нужд. Я бы не рекомендовал A, поскольку другой формат для того же запроса - огромная проблема для потребителей со статическими типизированными языками (то есть Java)

+0

Спасибо за ответ. Я считал, что 422 также исправлю меня, если я ошибаюсь. но разве это не означает, что запрос на отправку имеет семантические ошибки? – PKuhn

+0

Нет, 422 без ошибок, но сервер по-прежнему не может обработать его по какой-либо причине, неизвестной клиенту – libik

 Смежные вопросы

  • Нет связанных вопросов^_^