Web API 移动应用程序设计

Web API design for mobile app

我需要你的帮助。 我考虑为移动应用程序设计后端 API。 它应该是类似 REST 的还是其他的?

例如,假设我们创建了一些社交网络应用程序。有一页。 该页面包含:

  1. 用户信息(用户域中的一些字段)
  2. 用户消息集合(并非消息域中的所有字段)
  3. 数值 - 客人人数
  4. 数值 - 用户墙上的帖子数

我看到这个选项:

  1. 为所有 4 个域创建端点并调用 4 个请求:

    GET /users/111?fields=id,name,email
    GET /users/111/messages?fields=id,text,date_created
    GET /users/111/guests/count
    GET /users/111/posts/count?filter=news
    
  2. 创建一种通过一个请求获取所有这些信息的方法

    GET /GetUserProfileInfo?userId=111
    
  3. 其他选项

你怎么看?哪个变体更好?性能怎么样?它的最佳实践是什么?

谢谢。

您问的问题比较宽泛,但希望这能为您指明正确的方向。

我会选择 RESTful 界面,我有从移动应用程序连接到 REST 和 SOAP API 的经验,REST 绝对更容易。

当首先谈到端点时,我认为您可能想重新考虑选项一。例如,如果消息是单独的资源,您可能希望使用 /messages 后跟 /messages?user=111 等搜索参数。但这实际上取决于您要代表的资源。

对于第二个选项,我会使用动词,您只能根据用户创建用户配置文件。由于它以相同的方式为每个用户组合了用户的各个方面,因此它不仅仅是一个查询或一组查询。我会选择这样的 /user/111/profile.

就性能而言,让后端(可能是数据库)将用户配置文件的所有数据集中在一起并通过一个请求检索它可能会更好。在您使用单独的请求检索所有位的情况下,您会遇到额外 HTTP 请求的开销。

这些决定中的大多数确实取决于 API 的要求。另外,this question/answer 给出了非常详细的解释,应该也能帮助您。