![]() |
1
3
几点;
服务接口的域!=实现域您的服务公开的资源不必在代码中作为对象直接实现。(服务)接口不是实现。
Put&Post需要所有外部状态在进行更新时,必须提供所有资源状态(您说过只提供更改—这是一个补丁,而不是一个Put)。
通过收集资源模拟状态变化有时最好将状态更改建模为集合资源。在您的示例中,您确实需要考虑具有关联的“审阅队列”的“审阅”资源。 或 向小部件添加“需要检查”属性。 方法1。“审阅队列”的容器 拥有“review”对象可以很容易地列出要查看的小部件、分配要查看的资源等。 GET/REVIEW队列——列出需要评审的小部件 发布/审阅队列——创建一个新的审阅条目(只列出小部件的ID、名称和返回小部件的URL) delete/review queue/x——当小部件被检查时从队列中删除
如果存在与“审查队列”相关联的重要行为,例如与添加用于审查的小部件相关联的权限、多个审查队列等,我将使用此方法。
方法2。“需要审查”属性 您可能会认为一个单独的资源对您的需求来说是多余的。您可以使用post、put和get对基本功能进行建模。 当一个小部件被创建时,它的状态包括一个“需要审查”属性,该属性设置为假。显然你需要所有的外部状态 当一个小部件需要审查时,获取它并将其放回“需要审查”更新。再一次, 你需要所有的外部状态 投入中 列出小部件以供审阅时使用 获取/微件/?需要审查=真
可怜的旧RPC你在最后一段提到了RPC,尽管它已经脱离主题,但我还是忍不住要评论… 我想也许我们现在都有罪,因为我们把这个世界的恶习归咎于RPC。RPC的真正问题是,它的目的是使远程函数调用对程序员透明,隐藏故障场景,并试图使远程调用在实现语言中与标准函数调用等效。作为一个老的CORBA(遭受同样的问题)程序员,我可以理解REST是如何纠正这种失败的。
如果不检查新状态并将其与现有状态进行比较,就无法确定要调用的方法。 您应该在执行任何其他操作之前验证新状态,将任何错误传递回提交者。 从你最后一段开始,我想你已经知道了-对不起。 克里斯 |
![]() |
2
4
您不限于将URL映射到域对象。RESTfulAPI有少量的操作,但有大量的资源可以应用这些操作。 创建小部件: 发布到/rest/widget(返回“123”)。 (post方法用于请求源服务器接受请求中包含的实体作为请求行中请求URI标识的资源的新下属。) 验证小部件123: 发布到/restapi/validator/123 (该资源是小部件123的名义“验证器”。) 更新小部件123: 放入/restapi/widget/123 提交小部件123以供审查: 发布到/restapi/reviewqueue (只有一个审查队列,因此不需要/123。) 删除小部件: 删除到/restapi/widget/123 |
![]() |
3
0
很难说不知道该领域的更多信息,但是拥有一个“待审查”的收集资源可能是一个好主意。当您的资源在流程中流动时,您可以将它们从一个列表移动到下一个列表。作为一个附带的好处,您还可以选择在这些列表中进行一次访问,以了解哪些资源处于该特定状态。 |
![]() |
Dev · 在laravel rest api中按特定角色获取所有用户 2 年前 |
![]() |
IDskxo · 为什么我们需要添加。响应的end()? 2 年前 |
![]() |
KollegeBo · 触发更新的POST或GET 2 年前 |
![]() |
meren · 如何使用react向后端api请求用户提供的值? 2 年前 |
![]() |
CaptTaifun · 如何对“多个”和“单个”对象使用相同的端点? 2 年前 |
![]() |
Zsombor Szende · 汇率api从哪里获取数据?[闭门] 2 年前 |