Content-Type: text / x-flamebait
В последнее время я задавал тот же вопрос, и я полагаю, что половина проблемы заключается в объяснении того, почему полноценный REST полезен при определенииИнтерфейс для машинно-потребляемых данных является тем, что большую часть времени это не так.Хорошо, вам нужна действительно веская причина, чтобы игнорировать биты здравого смысла (URL-адреса определяют ресурсы, HTTP-глаголы определяют действия и т. Д. И т. Д.) - я ни в коем случае не предлагаю вернуться к мерзости, которая была SOAP.Но выполнение HATEOAS способом, одобренным Fielding (без нестандартных типов носителей) и дружественным к машине, похоже, дает убывающую отдачу: все это очень хорошо, используя стандартный тип носителя для описания допустимых переходов (если такой тип носителя)существует), но если приложение вообще сложно, агент вашего потребителя все еще должен знать, какие правильные переходы нужно сделать для достижения желаемой цели (покупка билета или что-то еще), и он не может этого сделать, если ваш потребитель (человек) это говорит.И если ему необходимо встроить в свою программу внеполосное знание о том, что путь с linkrels create_order => add_line => add_payment_info => Подтверждение является правильным, а reset_order не является правильным путем, то я не вижучто это гораздо более тяжкий грех - заставить его учить свой XML-парсер, что делать с application / x-vnd.yourname.order.
Я имею в виду, очевидно, да это все меньше работыокруглите, если есть подходящий стандартный формат с библиотеками и еще много чего, что можно использовать повторно, но в (возможно, более распространенном) случае этого нет, ваши варианты в соответствии с Fielding-REST: (а) создать стандарт или (б)увеличить клиент, загрузив код в него.Если вы просто хотите выполнить свою работу, а не изменить мир, вариант (с) «просто что-то придумать», вероятно, выглядит довольно заманчивым, и я, например, не стал бы винить вас за то, что вы взяли ее.