Извините за странный заголовок.Вот моя ситуация.
У меня есть таблица продуктов с названием и порядком отображения каждого продукта.Клиент может изменить порядок отображения товаров.Таблица генерируется с использованием jQuery.tmpl, а данные извлекаются с использованием GET в WCF.Продукты, извлеченные из базы данных, по CategoryID.
Когда пользователь изменяет порядок отображения продукта в сетке, продукт должен обновляться с использованием POST.После обновления данных сервер должен отправить обратно обновленный объект json для обновления таблицы.
ВОПРОС: Как мне структурировать мой POST URI для этого сценария?Вот что у меня есть сейчас.
[OperationContract]
[WebInvoke(
Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "product/form/{categoryId}")]
[return: MessageParameter(Name = "products")]
List<Product> UpdateProduct(string categoryId);
Я считаю, что мой URI для обновления ресурса правильный, так как я обновляю один продукт по идентификатору категории.Однако я хочу вернуть новый набор продуктов, основанный на изменениях, сделанных POST, и мне не нужно делать отдельный вызов GET.
Не уверен, что это «правильно».Эти рестораторы меня напугали!
Спасибо.
ОБНОВЛЕНИЕ Я начал больше думать о своем коде выше и понял, что здесь происходит больше.Реальность моей ситуации заключается в том, что я пытаюсь обновить конкретный продукт по ProductID, а затем возвращает список продуктов по CategoryID.По сути, ПОЧТА и ПОЛУЧИТЬ.Так будет ли мой URI выглядеть так?
[WebInvoke(
Method = "POST",
UriTemplate = "product/form/{productId}/products/{categoryId}")]
[return: MessageParameter(Name = "products")]
List<Product> UpdateProduct(string productId, string categoryId);
При таком методе?
public static List<Product> UpdateProduct(string productId, string categoryId)
{
ProductManager.UpdateProduct(int.Parse(productId));
return ProductManager.GetProducts(int.Parse(categoryId));
}
UPDATE2
Этот вопрос был решен здесь со ссылкой, предоставленной Даниилом.Хотя обработка всего в одном вызове POST, кажется, имеет смысл, я не думаю, что это соответствует духу REST и использованию Uri в качестве ресурсов.Использование POST, а затем вызов GET является ответом.Спасибо Даниилу.Его комментарии хороши.