适用于移动应用的Web API设计

时间:2016-09-01 06:39:15

标签: rest api asp.net-web-api backend

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

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

  1. 用户信息(来自用户域的某些字段)
  2. 用户消息的集合(不是来自消息域的所有字段)
  3. 数值 - 来宾人数
  4. 数字值 - 用户墙上的帖子数
  5. 我看到了这个选项:

    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. 其他选项

    4. 你知道吗?哪种变体更好?性能怎么样?它的最佳实践是什么?

      感谢。

1 个答案:

答案 0 :(得分:0)

您提出的问题相当广泛,但希望这可以让您朝着正确的方向前进。

我会使用RESTful界面,我有经验从移动应用程序连接到REST和SOAP API,而且REST肯定更容易。

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

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

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

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