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