如何在Angular2中发送过滤器和排序信息?

时间:2016-11-03 21:46:29

标签: rest http angular angular2-http primeng

我正在尝试使用PrimeNG数据表,它有一些排序和过滤功能。我想将搜索/过滤数据发送到我的restful api,但我无法决定如何去做。

数据是:

{
    "event": {
        "first": 0,
        "rows": 10,
        "sortField": "isDone",
        "sortOrder": 1,
        "filters": {
            "title": {
                "value": "a",
                "matchMode": "startsWith"
            },
            "details": {
                "value": "d",
                "matchMode": "startsWith"
            }
        }
    }
}

http服务不允许使用GET在RequestBody中发送数据。我认为使用http post发送数据是违反REST标准的。我找到的解决方案是将数据放入网址但我的同事不接受,他们认为使用http发送更好。

最佳做法是什么?我该如何发送数据?使用http post发送它是否可以接受?

1 个答案:

答案 0 :(得分:3)

在您的示例中,您正在讨论查询/过滤器参数。可以通过GET请求发送这些内容。通常,如果您尝试通过REST API检索资源,则可以使用GET而不是POST。

当然,如果API是您自己构建的API,您也可以选择POST。如果你这样做,你会创建一些过滤器/搜索端点,你可以发送一组(一组)过滤器。这通常是在搜索更复杂的情况下完成的,在这种情况下,您基本上也可以搜索/过滤资源。所以你会得到一个像这样的端点:/event/filter你可以用过滤器发送你的POST请求

另一种选择是为常见搜索添加别名并仍使用GET请求。然后端点可以这样反驳:

/event/doneEvents?title=a&details=d&top=10

最后,解决这个问题的方法不止一种,对于更复杂的搜索,POST肯定是可以接受的。构建API时更重要的部分是保持一致,因此无论选择何种选择都适用于任何其他复杂的搜索。

但是,您不是第一个提出这样问题的人,有关此问题的更多背景信息,我想指出here (stackoverflow)here (software engineering stackexchange)here (blog)

相关问题