【问题标题】:Proper Restful API design guide正确的 Restful API 设计指南
【发布时间】:2020-04-07 02:12:43
【问题描述】:

在制作后端服务器之前,我正在设计 Restful API。这项服务是小型 Instagram,我想知道我的宁静设计是否适合 REST 原则。

身份验证

  • 创建帐户:POST /auth/user
  • 删除帐户:DELETE /auth/user
  • 登录:POST /auth/session
  • 注销:删除 /auth/session

发帖

  • 加载提要:GET /posts
  • 创建帖子:POST /posts
  • 阅读帖子:GET /posts/:post_id
  • 删除帖子:DELETE /posts/:post_id
  • 读取 cmets:GET /posts/:post_id/cmets
  • 创建评论:POST /posts/:post_id/cmets
  • 删除评论:DELETE /posts/:post_id/cmets/:comment_id
  • 创建点赞:POST /posts/:post_id/likes
  • 阅读喜欢:GET /posts/:post_id/likes
  • 删除喜欢:DELETE /posts/:post_id/likes/:like_id

关注

  • 阅读以下内容:GET /followings/:user_id
  • 创建以下内容:POST /followings/:user_id
  • 删除以下内容:DELETE /followings/:user_id
  • 读取关注者:GET /followers/:user_id

活动

  • 阅读活动:GET /activities

搜索

  • 读取搜索:GET /filter/:search_term

探索

  • 阅读探索:GET /similars

我是 Restful API 设计的新手,所以我想为我的设计提供建议或修改。是否符合原则?

【问题讨论】:

  • 对我来说看起来很棒!

标签: rest


【解决方案1】:

我是 Restful API 设计的新手,所以我想为我的设计提供建议或修改。是否符合原则?

REST 不关心您为资源标识符使用的拼写。它不关心你如何设计你的资源。它关心的是超媒体和缓存,以及使用事物的标准化定义,以便我们可以使用通用组件来完成有用的工作。

GET /activities
GET /95d9f08a-fb79-4a18-a630-b2e31ad7039a

这两个URI都很好;通用组件在任何一种情况下都会做正确的事情,因为机器不关心拼写(前提是您使用的拼写与RFC 3986一致) - 标识符就是标识符,并且机器不会尝试从中提取任何语义信息。这意味着您的服务器可以根据自己的权限选择任何您想要的拼写。

换句话说,我们对 URI 的拼写大惊小怪的原因与我们对变量名的拼写大惊小怪的原因相同——为了让其他人更容易。因此,任何内部一致的拼写约定都是fine,与命名变量/函数/类的任何一致约定完全相同。

对所有读取使用 GET,对所有写入使用 POST,这很好 - 毕竟,网络取得了灾难性的成功。 POST 有点有趣,因为您要确保了解 cache invalidation 的含义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多