Я думаю, что довольно хорошо разбираюсь в принципах архитектуры RESTful, но меня там нет пока.
Я не могу понять, как клиенты узнают, какие методы HTTP доступны для каждого ресурса? Как насчет того, когда в потоке приложения требуется определенное действие для продолжения процесса?
Упрощенный пример:
Предполагается, что клиент размещает простой заказ в моем REST API.
Клиент отправит почтовый запрос по адресу: http://api.mycompany.com/orders
Запросить полезную нагрузку
12345
1
Предполагая, что запрос выполнен успешно
Ответная нагрузка
156
Pending Payment
12345
1
Если я понимаю ограничение гипермедиа правильно, я предоставляю соответствующие ресурсы, и клиент может выбрать, куда идти дальше.
В приведенном выше примере ссылка с rel = "order" может быть запросом GET , PUT или DELETE . Ссылка с rel = "invoice" ограничена запросом GET . Ссылка с rel = "payment" принимает только запрос POST .
Откуда клиент знает об этом? Я знаю, что если они сделают запрос OPTIONS к одному из вышеупомянутых ресурсов, он должен предоставить им доступные методы, но я не уверен, что это стандартный способ обработки такого рода сценария.
Любая помощь будет принята с благодарностью.