При обслуживании ответы REST API с ограничением гипермедиа, как указать клиенту, какой HTTP-метод (глагол) использовать?

Я думаю, что довольно хорошо разбираюсь в принципах архитектуры 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 к одному из вышеупомянутых ресурсов, он должен предоставить им доступные методы, но я не уверен, что это стандартный способ обработки такого рода сценария.

Любая помощь будет принята с благодарностью.

5
задан Bill H 2 June 2011 в 19:59
поделиться