2

我正在编写一套休息服务,在一些资源中,我正在处理以下情况。例如:

有资源:

/文章

用户可以创建文章,用户不能删除任何文章。用户可以获取自己创建的所有文章的列表(GET /articles),但看不到其他用户的文章。将有一组特殊的“管理员”用户,他们将有足够的权限查看或删除任何文章。

我看到了两种方法:

  • 与示例一样只有一个端点,并在服务代码中处理 POST、GET 和 DELETE 的权限

  • 具有不同的端点 /admin/articles,具有单独的实现,并在身份验证之后和服务代码之前处理权限。

你认为哪个更好/更干净/RESTfullish?

4

2 回答 2

1

如果两个用户可以创建具有相同标识符的文章,那么在更深层次(如文件系统)表示它们会更“清晰”且更容易。

/{用户名}/articles

如果他们都在同一个用户空间中创建文章,那么按资源授权更合适。

于 2013-03-27T11:06:13.313 回答
0

我会采用第一种方法 - 由于以下原因具有相同的端点:

  1. 更干净,更容易理解。
  2. 更容易维护——假设你将来会有更多的角色。这将强制为您添加的每个角色创建更多端点。
  3. 松耦合。通过使用这种方法,您可以将应用程序的授权问题与 API 本身分离。
  4. 无论如何,您必须检查代码本身的授权,以检查客户端是否调用了未经授权的资源,因此使用第二种方法您并没有真正保存任何东西。
于 2013-03-27T12:41:46.977 回答