Я знаю хорошо известный вопрос здесь: PUT vs POST in RESTВыбор PUT/POST в REST для создания нескольких ресурсов
Однако я немного запутался в одном моем случае и хотел бы обратиться за советом, чтобы правильно дизайн моего RESTful WS:
Предположим, моя система работает так:
Моя система будет иметь несколько рабочих мест партии определены (например, JOB1
, JOB2
).
За каждый день, я буду просить мою систему, чтобы создать список пакетного графика работы, предоставляя определенную дату (например, я прошел в 2014-12-25, то система будет создавать JOB1(2014-12-25)
и JOB2(2014-12-25)
.
Пользователь может инициировать график пакетного задания для выполнения
Я хочу обратиться за советом к собственно выставить их в качестве ресурса:.
Должен ли я сделать POST или PUT на ресурс /batchSchedules
, чтобы вызвать создание batchSchedules
для конкретная дата? Как должен выглядеть URL-адрес e это правильный RESTful API?
Как выглядит «запуск расписания»?
Я имею в виду эти два варианта, но оба не звучит совсем правильно меня:
Подход 1:
Чтобы создать расписание на конкретную дату: PUT
к /batchSchedules/2014-12-25
с пустым тело запроса, поскольку кажется, что я создаю «кучу расписаний» в качестве ресурсов, объявленных в URL.(Тем не менее, это кажется правильным, потому что я не собираюсь его заменять, если я его снова назову, что выглядит не очень хорошо)
Чтобы запустить выполнение расписания: PUT
- /batchSchedules/2014-12-25/JOB1
, поскольку он, кажется, заменяет ресурсы пакетного расписания (но это выглядит странно сог я на самом деле не заменить ресурс, не может занять пост здесь, потому что я на самом деле не генерируя ребенок ресурсов ниже URL)
Чтобы получить статус с графиком значимого вклада: GET
/batchSchedules/2014-12-25/JOB1
Получить расписание: GET
/batchSchedules?id=12345
который 12345 это идентификатор для расписания
Подход 2: Чтобы создать расписание на конкретную дату: POST
к /batchSchedules
с датой в теле запроса, как это кажется, что я создаю дочерний ресурс пакетных расписаний
Чтобы запустить выполнение расписания: PUT
- /batchSchedules/2014-12-25/JOB1
, поскольку он, кажется, заменяет ресурсы расписания (но выглядит странно, потому что я действительно не заменяю ресурс, не могу взять POST здесь, потому что я фактически не генерирую дочерние ресурсы ниже URL-адреса)
Чтобы получить статус с графиком значимого вклада: GET
/batchSchedules/2014-12-25/JOB1
Чтобы получить статус расписания: GET
/batchSchedules?id=12345
который 12345. является идентификатором для расписания
Подход 3:
Получить статус расписания со значимым вводом: GET
/batchSchedules?job=JOB1&date=2014-12-25
Чтобы получить статус расписания:/batchSchedules/12345
который +12345 это идентификатор для расписания
Чтобы создать расписание на конкретную дату: POST
к /batchSchedules
с датой в теле запроса, как это кажется, что я создаю кучу детских ресурсов пакетных графиков по /batchSchedules
(Безразлично «т, кажется, довольно хорошо)
чтобы запустить график выполнения: PUT
или POST
к /batchSchedules?job=JOB1&date=2014-12-25
, как это кажется заменой партии график ресурсов (выглядит очень странно для меня)
Какой из них является подходящим способом подвергнуть мой WS надлежащему методу REST?
Спасибо за ответ, я попытаюсь продолжить чтение. Только одно: я хочу избежать использования GET при создании этого «расписания», потому что я хочу, чтобы создание было явным, а GET/schedules/DATE должны давать мне графики (которые были созданы ранее) определенной даты. Если это мое дизайнерское решение, как я могу разоблачить его RESTful? И я считаю, что моя идея расписания работы больше похожа на ваше «выполнение расписания»: мое «расписание» - это задание, которое планируется выполнить на определенную дату. –
Ну, если вы настроены использовать PUT/POST, это сводится к информации, которую имеет клиент. Если клиент может * полностью * указать расписание, то PUT подходит. Если есть какая-либо информация, которая может быть изменена, которую клиент не имеет, вы должны * использовать POST. –