REST并且可以删除/更新等动作

时间:2018-12-07 18:08:02

标签: json rest api

我正在编写REST API。但是,要求之一是允许调用方确定是否可以执行某项操作(例如,可以启用或禁用按钮等)。 出于多种原因,可能不允许执行该操作-可能是用户权限,但是可能是因为,例如,您无法删除共享对象,或者您无法创建与另一个项目同名或另一个数组的项目商业规则。 确定是否是否可以删除的所有逻辑应在后端确定,但是前端必须在GUI中显示。

我正在尝试在REST中找到用于此目的的正确模式,并且有点简短。我可以创建一个并行API,以便为每个实体终结点都有一个EntityPermissions终结点,但这似乎有些过分。我还可以执行类似添加HTTP标头的操作,该标头指示该请求仅用于检查权限,不执行请求,但这似乎有点可疑,并且很可能会弄乱http缓存。

有人能指出我做这种事情的共同点吗?它有名字吗?还是讨论它的网页?我确信每个人对此都有自己的想法(例如我的愚蠢想法),但这似乎是一个足够普遍的要求,我认为必须有一个共同的模式。但是Google并没有太大帮助。

1 个答案:

答案 0 :(得分:0)

对此会有很多自以为是的答案。我会分享我的。可能不是最适合您的问题,但这是有效的解决方案。

如果遵循REST的真实定义,则将构建超媒体/ HATEOAS风格的Web服务。网址不会被硬编码,而是会通过链接的存在来发现它们并采取行动。

如果可能无法执行操作,则可以隐藏链接。如果用户获取下一个资源,他们将在此处看到所有可用的操作。

一种超媒体API的流行格式是HAL。您可以使用来自HTTP Link hints的更多信息来进一步装饰链接。

如果这是您第一次听说超媒体API,可能会有一点学习困难。但是,学习此结果可能会非常有益。