Мне нравится RESTful за его простоту и то, как он избегает крутизны обычных "корпоративных" систем, таких как SOAP, или двоичной твердости DCOM и RPC.
Но REST больше подходит для объектов базы данных, чем для более абстрактных служб. Мне было интересно, можете ли вы посоветовать мне, как бы вы это делали:
Например, предположим, что у меня есть веб-сервис RESTful для нормальной системы баз данных (например, сайт для покупки молочных продуктов), поэтому у меня есть/продукты/яйца/батарея и/продукты/молоко/снятое
Выполнение INSERT будет достигнуто путем создания POST в /products/eggs.
Но как бы вы сделали команду "очистить все"? Глагол DELETE подходит только для отдельных объектов. И "DELETE/products/milk" подразумевает удаление самой категории продукта "молоко", а не только всех продуктов в категории "молоко". И что, если вы хотите выполнить оба?
Другой вопрос, который я имею в отношении действий веб-сервиса, которые не связаны с сущностью. Например, если я создаю веб-сервис для базы данных паролей, у меня бы были такие операции, как "GET/passwords/stackoverflow.com", что было бы неплохо, но у меня также были бы операции по отключению веб-сайта в случае вторжения обнаружение. В рамках модели веб-сервиса "старой школы" у меня был бы метод, называемый "disableWebsite", однако я не могу создать HTTP-глагол под названием "DISABLE" и ресурс под названием "/website" (так что запрос будет "DISABLE/website" ). Какое решение здесь?
Наконец, как вы скомбинируете HTML-формы с RESTful? Веб-формы могут обрабатывать запросы GET только с помощью запросов или POST. Если у меня есть форма поиска, я хочу, чтобы он запрашивал "/products/search/{query}", но прямо сейчас запрос будет выглядеть как "/products/search? Query = {query}".