Я читал в Интернете о REST в течение нескольких дней и борюсь с концепцией HATEOAS.Как пример в стиле RPC будет выглядеть в стиле ресурса
Я думаю, что я боюсь, потому что я не правильно понимаю, как моделировать данные как ресурсы и (переходные состояния?) Между ресурсами. Я считаю, что моя проблема заключается в том, что весь мой опыт - это OO и RPC, и я не привык думать с точки зрения ресурсов.
Единственный способ получить понимание - это взять пример из моего мира, сказать, что я думаю, что это может выглядеть как смоделированное в стиле ресурса/ссылки, и выбросить его там, чтобы его сбили в огне. После того, как ожог закончен, я должен хотя бы лучше понять, чего не понимаю.
My (упрощенный) пример:
Я подрядчик, например, водопроводчик. У меня есть ряд заданий, назначенных мне. Я могу искать свои задания, задавая простые параметры, такие как заданный диапазон дат. Я могу начать любую работу, назначенную мне. Когда я запускаю задание, я могу указать время, в которое я его запустил, или оставить его пустым, если я начну его сейчас.
Если я реализовывал это в RPC образом я мог бы выставить два метода для вызывающих абонентов:
ListOfJobs GetJobs(search parameters)
StartJobResult StartJob(jobID, optional start datetime)
Как вы можете видеть, я имею в виде объектов и операции.
Если бы я думал о ресурсах и ссылках, какими могут быть ресурсы?
Моя догадка:
- Исполнитель: ~/подрядчик/plumbersareus?
- JobSearch: ~/подрядчик/plumbersareus/search/searchidentifier?
- Работа: ~/job/12345?
- Посещаемость: ~/job/12345/attendances/attendanceidentifier?
Предполагая, что любое из вышеуказанных правильных (и я сомневаюсь, что это), что должны быть «findidentifier» и «attendanceidentifier»? У первого не было бы идентичности в моем мире RPC; это просто параметры. Последний будет идентифицироваться с помощью DateTime.
Какими могут быть ссылки (игнорируя ссылки на себя)?
- Подрядчик: ~/подрядчик/plumbersareus/поиск?
- JobSearch: ~/job/12345, ~/job/12346, etc?
- Работа: ~/job/12345/attendances?
- Посещаемость:?
Примите мои извинения, если это повторите вопрос и закройте его. (Я не мог найти повторение, но я, возможно, искал неправильные условия.)