几天来,我一直在网上阅读有关 REST 的信息,并且正在为 HATEOAS 的概念而苦苦挣扎。
我认为我正在苦苦挣扎,因为我没有正确理解如何将数据建模为资源和(状态转换?)资源之间的链接。我相信我的问题是我所有的经验都是 OO 和 RPC,我不习惯以资源为中心的方式思考。
获得理解的唯一方法是从我的世界中举一个例子,说出我认为可能看起来像以资源/链接为中心的方式建模的内容,然后将其扔到那里被烧毁。刻录完成后,我至少应该对我不理解的东西有更好的理解。
我的(简化)示例是:
我是一名承包商,例如管道工。我有许多工作分配给我。我可以搜索我的工作,指定简单的参数,例如目标日期范围。我可以开始分配给我的任何工作。当我开始工作时,我可以选择指定开始工作的时间,或者如果我现在开始工作,则将其留空。
如果我以 RPC 方式实现它,我可能会向调用者公开两种方法:
ListOfJobs GetJobs(search parameters)
StartJobResult StartJob(jobID, optional start datetime)
如您所见,我正在考虑对象和操作。
如果我在考虑资源和链接,资源可能是什么?
我的猜测是:
- 承包商:~/contractor/plumbersareus ?
- JobSearch: ~/contractor/plumbersareus/searches/searchidentifier ?
- 工作:~/job/12345 ?
- 出勤:~/job/12345/attendances/attendanceidentifier ?
假设以上任何一项都是正确的(我怀疑它是正确的),“searchidentifier”和“attendanceidentifier”应该是什么?前者在我的 RPC 世界中没有身份;它只是参数。后者将由 DateTime 标识。
链接可能是什么(忽略自我链接)?
- 承包商:~/contractor/plumbersareus/searches ?
- 求职:~/job/12345、~/job/12346 等?
- 工作:~/job/12345/attendances ?
- 出席:?
如果这是一个重复的问题,请接受我的道歉并将其关闭。(我找不到重复,但我可能一直在使用不正确的术语进行搜索。)