RESTful查询API设计

时间:2019-07-15 19:45:55

标签: rest api architecture

我想问问最RESTful的查询方式是什么,我有这个现有的API

/entities/users?skip=0&limit=100&queries={"$find":{"$minus":{"$find":{"username":"markzu"}}}}

很容易识别查询的第一部分skiplimit,但是我发现“查询”部分使其他人感到困惑。查询的意思是

  

查找每个用户查找用户名为'markzu'的用户实体

之所以定义它,是因为内部数据库查询行为。 在我们使用的NoSQL数据库中,该资源运行两个事务查询,首先是查找User表中的所有内容,然后减去具有指定用户名(类似于SQL)的find User布尔操作。 换句话说,查询的意思是“获取用户名'markzu'以外的每个用户

基于标准以RESTful方式定义此内容的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  

基于标准以RESTful方式定义此内容的正确方法是什么?

只要您的选择与RFC 3986中定义的生产规则一致,REST就不会在意您使用什么标识符作为资源标识符。

但是,我们确实有URI Templates

的标准
  

URI模板是紧凑的字符序列,用于通过变量扩展来描述一系列统一资源标识符。

您已经知道URI模板最熟悉的形式-查询字符串中编码的键/值对。

?skip=0&limit=100&username=markzu

这通常是一个方便的选择,因为HTML知道如何将表单处理为url编码的查询。

看起来您不需要任何其他参数,只需要能够从其他用户那里获得此查询即可。因此,一个完全合理的选择可能是

/every-user-except?skip=0&limit=100&username=markzu

考虑“准备好的陈述”而不是“查询”可能会有所帮助。

实现的基础细节实际上根本不应该参与计算。 REST API是一种外观,可以使您的应用看起来像HTTP感知的键值存储。