【问题标题】:REST And Can Delete/Update etc actionsREST 并且可以删除/更新等操作
【发布时间】:2018-12-07 18:08:01
【问题描述】:

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

我正在尝试在 REST 中找到用于此目的的正确模式,但结果有点短。我可以创建一个并行 API,因此对于每个实体端点都有一个 EntityPermissions 端点,但这似乎有点过头了。我还可以做一些事情,比如添加一个 HTTP 标头,表明该请求只是检查权限,而不是执行它,但这似乎有点可疑,并且可能会弄乱 http 缓存。

谁能指出我做这种事情的常见模式?它有名字吗?还是讨论它的网页?我相信每个人对此都有自己的想法(就像我的愚蠢想法一样),但我认为这似乎是一个足够普遍的要求,我认为它必须有一个共同的模式。但谷歌并没有多大帮助。

【问题讨论】:

    标签: json rest api


    【解决方案1】:

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

    如果您遵循 REST 的真正定义,您将构建一个超媒体/HATEOAS 风格的 Web 服务。网址不会被硬编码,它们会被发现并且动作会通过链接的存在而被发现。

    如果某个操作可能无法执行,您可以隐藏链接。如果用户获取下一个资源,他们只会看到所有可用的操作。

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

    如果这是您第一次听说超媒体 API,可能会有一些学习曲线。不过,学习这一点的结果可能非常有益。

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多