【问题标题】:OpenRasta - Providing Filter, Sorting and Paging for List ResourcesOpenRasta - 为列表资源提供过滤、排序和分页
【发布时间】:2012-01-29 16:16:06
【问题描述】:

我们正在使用 OpenRasta 创建一个 REST API,除了对所有资源的常规 GET、POST、PUT 和 DELETE 之外,我们还为具有复数名称的资源提供 GET。因此,API 的使用者可以对User 进行GET、POST、PUT 和DELETE,也可以对Users 执行GET,这将返回List<Users>。现在我们希望客户端能够按其属性对其进行过滤和排序,并允许支持分页以分页表格格式显示数据。

虽然,我查看了WCF Data Services Toolkit 主页,看起来它很有用,但是在查看了博客文章和入门页面后,我无法理解如何使用它来解决我在 OpenRasta 中的问题。

或者还有什么更简单的我可以做的吗?

【问题讨论】:

    标签: sorting filtering paging openrasta restful-url


    【解决方案1】:

    OR 不支持像 OData 这样的功能,主要是因为它会导致系统非常不稳定。

    如果 /users 是“用户列表”,那么它是与 /users/1(用户的第一页)或 /users/byName/1(按名称排序的用户的第一页)不同的资源。

    您当然可以通过注册具有查询参数的 URI 轻松实现所有这些,因为这些参数是可选的

    .AtUri("/users?page={page}&filter={filter}
    

    你的处理程序看起来像

    public List<User> Get(int page = 0, string filter = null) { ... }
    

    【讨论】:

    • 嗨,seb,它是如何导致系统不稳定的,你能举个例子吗?谢谢。此外,允许客户指定他们希望为给定资源返回的“字段”,这是否认为不好?
    • 它会导致非常静态的 URI 定义、臃肿的媒体类型和对预期目标的低保真度。几年前我在 NDC 上强调了这些问题,该视频在某处可用。对于用户希望特定资源的字段列表意味着它是不同的资源,这可能导致非常糟糕的实践或使您的 URI 方案对缓存和中介非常无效。与其他所有内容一样,它是 RPC 和 ReST 之间的平衡,适合您的系统,因此没有严格的答案栏是否违反了 ReST 约束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 2011-08-17
    • 2018-06-22
    • 1970-01-01
    • 2023-04-04
    • 2013-02-19
    相关资源
    最近更新 更多