Каким будет правильный REST API для получения всех классов для тренера, когда они открывают свое приложение
Если вы хотите REST API, первым делом нужно тщательно подумать о своем resources .
Любая информация, которая может быть названа, может быть ресурсом: документ или изображение, временная служба (например, «сегодняшняя погода в Лос-Анджелесе»), коллекция другие ресурсы, не виртуальный объект (например, человек) и так далее. Другими словами, любая концепция, которая может быть целью гипертекстовой ссылки автора, должна вписываться в определение ресурса.
Концептуально, «расписание Алисы» и «расписание Боба» являются ресурсами. То же самое относится и к «Моему расписанию», но, конечно, у нас есть местоименная предшествующая проблема.
Есть два довольно простых способа обработать аутентифицированный запрос на «мое расписание»; вы можете ответить, перенаправив на правильный ресурс, и вы можете встроить текущее представление правильного ресурса в свой ответ (с метаданными, указывающими, откуда он пришел). Оба подхода: отлично .
(Примечание: RF C 7234 ограничивает кэширование аутентифицированных ответов, что является частью того, почему это "хорошо") .
REST не заботится о том, какое написание вы используете для своего URI (при условии, что оно соответствует производственным правилам, определенным в RF C 3986). Так что все это хорошо
/classes/actorId=alice
/classes?actorId=alice
/classes/alice
/classes?alice
Используйте другой URI.
Все еще в порядке.
Одна из вещей, о которых вам нужно знать, это то, что аннулирование кэша связано с URI; когда вы отправляете POST в /classes
, это делает недействительным ваше локально кэшированное представление /classes
, но не локально кэшированное представление /myclasses
. Это означает, что когда у вас есть одна и та же информация, закодированная в представлениях нескольких ресурсов, эти представления не обязательно будут синхронизированы.