Я создаю веб-сервис RESTful, который обычно использует операции CRUD для набора типов данных.Отображения глаголов HTTP для этих API-интерфейсов очевидны.
Интересная часть заключается в том, что клиент может запросить инициализацию длительной (т. Е. Часов) операции с одним из объектов данных;о состоянии операции сообщается путем запроса самого типа данных.
Например, предположим, что объект имеет следующие характеристики:
SomeDataType
{
Name: "Some name",
CurrentOperation: "LongOperationA",
CurrentOperationPercent: 0.75,
CurrentOperationEtaSeconds: 3600
}
Мой вопрос в том, какой из них лучше всего подходит для RESTful?подход должен быть для начала LongOperationA
?
Наиболее очевидный подход, по-видимому, заключается в том, чтобы сделать саму операцию идентификатором, возможно, что-то вроде POST <code>https://my-web-service.com/api/StartLongOperationA?DataID=xxxx
, но это кажется немного неуклюжим, даже если я не указываю данныеидентификатор как параметр запроса.
Реализовать это как идемпотентное действие также довольно тривиально, поэтому использование POST
кажется пустой тратой;с другой стороны, PUT
неудобно, поскольку данные фактически не записываются в службу.
Кто-нибудь еще сталкивался с подобным сценарием в своих службах?Что вы сделали, чтобы предоставить API для инициализации действий, выполняющих принципы RESTful?
TIA,
-Mark