我想问问最RESTful的查询方式是什么,我有这个现有的API
/entities/users?skip=0&limit=100&queries={"$find":{"$minus":{"$find":{"username":"markzu"}}}}
很容易识别查询的第一部分skip
和limit
,但是我发现“查询”部分使其他人感到困惑。查询的意思是
查找每个用户减查找用户名为'markzu'的用户实体
之所以定义它,是因为内部数据库查询行为。 在我们使用的NoSQL数据库中,该资源运行两个事务查询,首先是查找User表中的所有内容,然后减去具有指定用户名(类似于SQL)的find User布尔操作。 换句话说,查询的意思是“获取用户名'markzu'以外的每个用户”
基于标准以RESTful方式定义此内容的正确方法是什么?
答案 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感知的键值存储。