分頁page Spring中的REST分頁

2021-10-16 02:51:17 字數 2738 閱讀 7690

本文將介紹在rest api中實現分頁的基礎知識。我們將專注於使用spring boot和spring data 在spring mvc中構建rest分頁。

分頁是一種處理大結果資料集的機制。在rest api中實現分頁並沒有什麼不同,但需要一些額外的思考過程。為rest api提供流暢有效的分頁可以增加使用者體驗並有助於構建高效,快速的rest api。我們使用spring boot作為示例。

在我們開始設計分頁api之前,我們需要清楚地了解頁面作為資源或資源的表示。我們需要記住許多基本要素

乙個頁面page不是rest中的乙個資源,而是其請求的屬性。

以資源名稱product為構建分頁的例子,在高層次上我們確實有以下三個選項來構建分頁。

考慮到上述問題,讓我們嘗試回答一些在設計rest api分頁時有用的問題。

請記住,rest api不是圍繞任何預定義的規則或規範構建的,所有上述三個選項都是有效的,並且基於上述問題的答案。如果我們將頁面視為資源,則選項3是有效選擇;但如果我們說頁面上的產品是資源,那麼選項3不再有效(在第1,2頁上的產品可能會在將來更改),就個人而言,我會選擇選項1,因為對我來說,頁面 page 不是 資源resouce,它是請求的屬性。

可發現性 有助於使 restful api 更加實用和優雅。使rest api 可被發現經常被忽視。以下是rest api可發現性的高階摘要 。

可發現性與rest api中的hateoas密切相關。rest api分頁可發現將通過"next",「previous」,"first"和"last"鏈路作為響應資料的一部分。我們正在考慮如何在分頁期間將此功能新增到您的api。

在構建rest api分頁介面時,讓我們快速介紹一些要點。

限制允許api和客戶端控制結果集中請求的結果數。通過傳遞 limit 引數,您可以指定每個頁面要返回的專案數.api可以配置預設限制,但應允許客戶端指定限制。

在上面的請求中,客戶端將限制設定為50.小心,同時允許客戶將limit 引數設定 , 設定為極高數量的限制會降低api效能。建議在api設計期間具有最大允許限制。

排序總是與搜尋和分頁併排。在設計rest api時,提供靈活性,讓客戶指定排序選項,同時從api返回結果。建議在設計api時使用 sort_by = [attribute name] - [asc / desc]模式.api設計器應將允許的屬性名稱指定為sort引數。例如,您可以使用?name-asc按產品名稱排序或?name-desc反向排序。

我們在spring中處理rest分頁時介紹了所有基本內容。我們在這篇文章中使用了以下技術堆疊,但它可以在任何其他技術上實現,前提是您在設計時遵循所有基本原則。

在本文中使用spring data rest的原因之一是data rest api支援的開箱即用功能。

我們將在pom.xml中新增以下依賴項

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-data-rest

org.springframework.boot

spring-boot-starter-hateoas

org.springframework.boot

spring-boot-starter-web

org.hsqldb

hsqldb

runtime

@restcontroller

public class productrestcontroller

private string createlinkheader(pagedresources < productentity > pr)

public static string buildlinkheader(final string uri, final string rel)

}

讓我們快速介紹上面**中的幾個要點。

每個頁面響應將返回鏈結到當前頁面前面和後面的頁,這是基於使用iana定義鏈結關係 prev 和 next。但是,如果您當前位於結果的第一頁,則不會呈現任何 prev鏈結。

我們來看下面的例子:

,	    "_links": 

, "self":

, "next":

, "last":

} ,"page":

}

讓我們深入了解響應資料中的一些有趣事實

self 鏈結提供整個系列。

底部 page 提供有關分頁的資訊,包括頁面大小,總結果,總頁數和當前頁碼。

Oracle中的SQL分頁分頁

作者出處 本文分析並介紹oracle中的分頁查詢的方法。oracle中的表,除了我們建表時設計的各個字段,其實還有兩個字段 此處只介紹2個 分別是rowid 行標示符 和rownum 行號 即使我們使用describe命令檢視表的結構,也是看不到這兩個列的描述的,因為,他們其實是只在資料庫內部使用的...

R中的函式

一 函式的定義格式為 name function arg 1,arg 2,expression 可以看做是 y f x 的寫法。expression是r的表示式,括號內是引數,放在函式最後的是返回值,返回值可以是向量,陣列,列表,資料框。r函式是一定要有返回值的。二 函式的語句 if switch ...

r或者 r 在python中的意思

這兩個都是python的轉譯字元,類似於 r,d,f 有過c語言基礎的朋友應該會比較容易上手吧?簡單的例子 a 123 b hello,format a b hello,123 上面的例子用的是format,跟直接 效果類似。例子二 a 123 b hello,r a b hello,123 這對一...