簡體   English   中英

如何在Angular2中發送過濾器和排序信息?

[英]How to send filters and sort information in Angular2?

我正在嘗試使用PrimeNG數據表,它具有一些排序和過濾功能。 我想將搜索/過濾器數據發送到我的靜態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標准。 我發現的解決方案是將數據放入url,但我的同事不接受,他們認為使用http帖子發送更好。

最佳做法是什么? 我應該如何發送數據? 可以通過http帖子發送嗎?

在您的示例中,您正在談論查詢/過濾器參數。 可以通過GET請求發送它們。 通常,如果您嘗試通過REST API檢索資源,則應使用GET而不是POST。

當然,如果您正在構建API,那么您也可以選擇POST。 如果這樣做,您將創建一些過濾器/搜索端點,可以向其發送(一組)過濾器。 這通常是在更復雜的搜索中完成的,在這種情況下,您基本上也將搜索/過濾器也變成了資源。 因此,您將獲得如下所示的端點: /event/filter ,可以在其中發送帶有filter的POST請求

另一種選擇是為通用搜索添加別名,並且仍然使用GET請求。 然后端點可能看起來像這樣:

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

最后,有多種方法可以解決此問題,對於更復雜的搜索,POST絕對可以接受。 構建API時,更重要的部分是要保持一致,因此對於出現的任何其他復雜搜索,無論選擇如何,都應堅持下去。

但是,您不是第一個提出這樣問題的人,並且想要獲得更多與此相關的背景知識,我想在這里(stackoverflow)這里(軟件工程stackexchange)這里(blog)指向您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM