1
8
对不起,我没有时间公正地回答这个问题,但很高兴看到一些经过深思熟虑的问题。 以下是一些评论: 不要陷入将HTTP动词映射到CRUD的陷阱。是的,非常干净地获取和删除映射,但是put可以创建和更新(但仅限于完全替换),post是一个通配符动词。post实际上是处理所有不适合GET、PUT和 删除。 使用属性来表示对象的状态只是状态管理的一种方法。我想您可以想象一下以下请求可能会做什么:
子资源也是管理资源当前状态的有效方法。我觉得没有必要以一致的方式处理资源的“状态”属性及其“数据”属性。 试图将资源直接映射到表将严重限制您。别忘了,当你遵循其余的约束条件时,你会突然发现你可用的动词非常有限。你需要能够在你使用的资源中保持创造性来弥补这一点。将自己限制在一个资源等于一个表将严重限制最终应用程序的功能。 我们经常看到Rails、ASP.NET MVC和WCF REST用户在StackOverflow上发布关于在REST约束下如何执行某些操作的问题。问题通常不是REST的约束,而是框架在支持RESTful应用程序方面的限制。我认为首先找到一个问题的宁静解决方案,然后看看它是否可以映射回您选择的框架是至关重要的。 就创建一个比资源本身更精细的权限模型而言。记住,REST的一个关键约束是超媒体。超媒体不仅可以用于查找相关实体,还可以用于表示有效/允许的状态转换。如果返回的表示形式不包含嵌入链接,则可以根据权限有条件地控制谁可以执行哪些操作。例如,如果用户有权解锁Post 342,则可以返回嵌入在表示中的以下链接:
如果他们没有该权限,则不要返回链接。 我认为你在这里的一个困难是你试图一下子把一个大问题考虑得太多。我认为您需要将尝试向客户机公开的RESTful接口视为与管理权限和谓词以管理域模型中的授权不同的问题。 我知道我没有直接回答你的任何问题,但希望我提供了一些观点,可能在某种程度上有所帮助。 |
2
2
我最近发现了一个认证解决方案,似乎可以解决我的大部分问题。如果你喜欢这个问题,你可能会感兴趣: |
3
0
正如达雷尔所指出的,休息不是积垢。如果您发现所标识的资源的粒度太粗,统一接口无法提供足够的控制,那么请将资源拆分为子资源,并将原始资源用作指向其组件的超链接的“集合”。 |
Lassi · 在Go web app路由器中检查用户权限的最佳方法 6 年前 |
odysseus · 对非IBMid用户的现有权限没有输出? 6 年前 |
Matt Prigge · 以管理员身份运行时提升到高完整性级别 6 年前 |
D Mac · 在AWS S3中,如果文件已经存在,如何授予帐户权限 6 年前 |