Поскольку в REST вы всегда должны действовать на ресурсе или на коллекции ресурсов, в этом случае я бы рассматривал действие ' MOVE ' как ресурс REST. Поначалу это может показаться неправильным, поскольку мы считаем « MOVE » глаголом, а не существительным, но это может иметь смысл, если интерфейс охватывает высокий уровень абстракции. В интерфейсе высокого уровня, который предоставляет опции, доступные пользователю для управления игрой, вы можете использовать « MOVE OPTION », которая внезапно становится существительным!
Поэтому я бы использовал глагол POST для перемещения предмета в инвентаре, поскольку мы будем выдавать запрос на создание нового действия MOVE . Рассмотрим следующие очевидные примеры:
- POST /move/inventory/a/b
- POST /sell/inventory/a
- POST /use/inventory/b
Команда ' MOVE ' в необработанных операциях CRUD обычно реализуется с помощью команды CREATE, за которой следует DELETE. Тем не менее, я думаю, что вы найдете слишком низкий уровень, если будете использовать необработанные операции CRUD на таких игровых ресурсах.
Если бы вы получили элемент из x и поместили его в y, где бы вы поместили логику проверки, которая проверяет, является ли y допустимым местом назначения? Это должно быть в модели (за интерфейсом) или в вашей игре? Если это должно быть в модели, то я думаю, что вы должны рассмотреть подход высокого уровня, который я описал ранее. Если, с другой стороны, вы намереваетесь обрабатывать эту логику в игре (перед интерфейсом), тогда вы можете использовать необработанный подход CRUD, как Ян предложил в другом ответе .
Обратите внимание, что если ваша РПГ будет ориентирована на веб-сайты, обязательно, чтобы вы обрабатывали игровую логику на стороне сервера. В этом случае я бы попытался сопоставить интерфейс REST один-к-одному с элементами управления и параметрами, предложенными пользователю, и, опять же, я бы предложил модель высокого уровня, предложенную выше.