Я создаю небольшой инструмент, чтобы помочь людям выбрать групповую деятельность, например, в какой ресторан им следует пойти на обед. Мои объекты - это события, параметры и предпочтения. У события есть несколько опций, пользователь может ранжировать опции по изобретению. Таким образом, голоса пользователей могут быть 1: опция B, 2: опция A, 3: опция C.
Мой вопрос: каков наилучший способ сопоставить это с REST? Кажется очевидным, что я должен поддерживать CRUD для событий с
GET /events/ : list of events
POST /events/ : create a new event
GET /events/1 : get event one
and on options with:
POST /events/1/options : add a new option to the event
(во всех случаях должен быть аутентифицированный пользователь)
Где я запутался, как пользователь голосует заварианты для события. Что лучше всего подходит для REST, так это сделать PUT для каждого варианта, для / events / 1 / options / 1 / голосования, но кажется, что было бы трудно обеспечить соблюдение требований между голосами, например, если бы я хотел принудительноголоса, чтобы оценить варианты без связей, я мог бы сделать это, если бы я получил все голоса сразу, как в 1 B, 2 A, 3 C, но если пользователь меняет свои голоса на 1 C, 2 B, 3 A,приложение будет в недопустимом состоянии между этими запросами.
Должен ли я сделать голоса одним пакетом и получить к ним доступ в / events / 1 / голосах?
(Это может показаться чрезмернымЯ планирую сделать проект на выходные, но моя цель - сделать это правильно, так как у меня нет такой роскоши в коде, за который мне платят.)