УДАЛИТЬ разные ресурсы с помощью одного запроса - это нормально, или мы должны попытаться смешать эти ресурсы с одним - PullRequest
0 голосов
/ 02 января 2019

Предположим, у меня есть коллекция с конечной точкой / playrequests. Это коллекция (список) для тех игроков, которые хотят найти другого игрока, чтобы начать матч.

Сервер будет периодически проверять эту коллекцию и, если он найдет двух неназначенных игроков, он создаст другой ресурс в другой коллекции с конечной точкой / quickmatchs, а также изменит (например) поле в коллекции PlayRequests для обоих игроков, чтобы показать, что они назначены на QuickMatch.

В этот момент игроки могут отправить запрос PUT или PATCH, чтобы установить (например) поле «ready» своего ресурса quickMach в значение true. таким образом, сервер и каждый из них могут выяснить, что, если они оба готовы и сопоставление может быть начато.

(часть вопроса ниже части ...)

Кроме того, перед playRequests, назначенными для матча, а также после того, как они назначены ему, они могут отправить запрос DELETE конечной точке / playrequests, чтобы сообщить серверу, что они хотят отказаться от запроса. Так что, если матч еще не создан, это нормально. ресурс, связанный с плеером, будет удален из коллекции playRequests. но если игрок назначен на матч, сервер должен удалить связанный playRequest, а также он должен удалить связанный ресурс quickMatch из коллекции quickMatchs. (а также мы должны изменить playRequest, связанный с другим игроком, чтобы указать, что он не назначен сейчас. Или мы можем проверить и изменить его позже, когда он проверит состояние связанных ресурсов в обеих коллекциях. Это пока не главная проблема. )

Итак, мой вопрос заключается в том, что Можно ли изменить ресурс, связанный с данной конечной точкой, а также соответствующим образом изменить другой ресурс, если это необходимо? (Я имею в виду, можно ли манипулировать различными ресурсами с разными конечными точками в одном запросе? Я не хочу отправлять несколько запросов.) Или мне нужно смешать эти две коллекции, чтобы избежать такого действия?

Я знаю, что многие вещи (разные стратегии) ​​возможны, но я хочу знать, что (с точки зрения RESTFUL), что является стандартным / подходящим, а что нет? (учтите, что я немного новичок в отдыхе)

1 Ответ

0 голосов
/ 02 января 2019

это нормально, чтобы изменить ресурс, который связан с данной конечной точкой, а также соответственно изменить другой ресурс

Да, и есть последствия.

Предположим, у нас есть два ресурса, /fizz и /buzz, и представления этих ресурсов связаны с некоторыми подробностями реализации на сервере. На клиенте мы получили доступ к обоим этим ресурсам, поэтому мы кэшировали копии каждого из них.

Потенциальная проблема здесь заключается в том, что сервер изменяет представления этих ресурсов вместе, но для клиента они являются отдельными.

Например, если клиент отправляет небезопасный запрос на изменение /fizz, сообщение об успешном ответе от сервера сделает недействительной локально кэшированную копию этого представления, но устаревшее представление /buzz не будет выселено. По сути, клиент теперь имеет представление о мире с версией 0 /buzz и версией 1 /fizz.

Это нормально? «Это зависит» - будут ли с вами дорогие вещи, если ваши клиенты будут в непревзойденном состоянии? Можете ли вы исправить «проблему» другими способами (например, попросив клиента чаще проверять наличие обновлений)?

...