Я пытаюсь создать RESTful API для передачи данных в интерфейсное JS-приложение, а в будущем - родное мобильное приложение, когда я начну его писать.RESTful API - обработка обновлений, зависящих от других обновлений.
Я довольно новичок в интерфейсе разработчика, поэтому API-проекты также довольно новы для меня. Я пишу приложение для настольного тенниса, чтобы начать свое обучение, и одна из конечных точек, похоже, не подходит для любого примера, который я читал о рекомендуемых структурах API.
У меня есть две сущности, лиги и игроки. В лиге есть коллекция игроков, и когда результат вводится, игроки переключают «позицию» в лиге, если победитель оказался ниже проигравшего до того, как был введен матч.
Стандартный REST API может иметь конечные точки, как следует, чтобы обновить данные конкретного игрока в лиге:
(POST/PATCH) -/API/v1/лиги/{лигой ID}/игроков/{player-id}
eg/api/v1/лиги/1/players/12
Это хорошо, но в моем случае, когда результат вводится в веб-приложение, двум различным игрокам необходимо обновить значение «position» через API. В идеале я бы установил этот набор как уникальное поле в базе данных, поэтому только один игрок может находиться на каждой позиции в лиге в любой момент времени. Однако, если это так, с использованием конечной точки API, как указано выше, моему внешнему приложению нужно будет вычислить новые позиции игроков на основе введенного результата, обновить игрока 1, а затем, если успешный игрок 2 обновления (откат при отказе). Следуя этой структуре, поле позиции не может быть уникальным, так как после обновления игрока 1 оба они имеют одинаковое значение позиции до тех пор, пока игрок 2 не будет обновлен.
Единственное другое решение, о котором я могу думать, это иметь другую конечную точку с соответствующим именем, которая принимает объект «результат», выполняет ли логика разработки новой позиции игроков на стороне сервера, соответственно обновляет и возвращает некоторые данные для пользовательского интерфейса для повторной привязки и обновления.
Итак, мой вопрос: какой из двух описанных выше методов вы выбрали бы и почему?
Если вы выберете последнее, какие данные вы вернете из вызова API для пользовательского интерфейса для привязки? Полная лига данных игрока? Или только два игрока, которые были обновлены?
Благодаря
«Идентификатор игрока» - это элемент в URL-адресе, а не его текущая позиция или рейтинг в лиге. Ваш URL должен всегда указывать на тот же ресурс. –
Да, извините, что было не ясно, URL выше обновляет плеер с идентификатором 12, и вы передадите объект JSON на этот URL с данными, чтобы обновить позицию игроков. –