如何设计一个查询,我从RESTful方式从我想要应用过滤器的资源中检索最后一个数据?

时间:2017-11-14 11:51:02

标签: rest api http design-patterns

当我想从measurements检索未删除的installations时,查询应如何显示?

那样的东西?

/my-web-service/installations/measurements/last?removed=false

问题是,我不想检索未从measurements删除的最后installations。我想从measurements中检索未删除的最后installations

2 个答案:

答案 0 :(得分:1)

根据this best practices article,您可以使用“别名进行常见查询”:

  

为普通消费者提供更愉悦的API体验,   考虑将一系列条件打包成易于访问的条件   RESTful路径。例如,上面最近关闭的票证查询   可以打包为GET / tickets / recent_closed

所以,在你的情况下,它可能是:

/my-web-service/installations/non_removed/measurements/last

其中non_removed将是查询未删除的安装的别名。

希望它有所帮助!

答案 1 :(得分:1)

我在这里看到了几种可能性:

  1. 如果您需要从端点以事务方式读取数据,那么您的设计方式就是您的选择。我要更改的是从removedinstallationRemoved的参数名称,因为它更具描述性并将端点缩短为/my-web-service/measurements/ - 因为installations它不清楚客户在哪个范围内运作。另外,您是否需要since参数来过滤最后测量值?

  2. 我有机会拆分我添加的两个端点:

    • /my-web-service/installations/?removed=false
    • /my-web-service/measurements/?since=timestamp&installations=<array>

    它不会使它变得更好(当涉及到更好或更糟)但对用户来说更容易和更具预测性。

  3. 一般情况下,尝试使用过滤选项添加更多通用端点,而不是高度专注 - 做一件特别的事情。这种方式导致难以使用的松散API。此外,在filtering上。

    最后通知,如果您的客户使用它不是因为他们必须使用,而是他们喜欢的话,那么您的API是好的;)