PageResponse.java
Springboot/bookstore-api/src/main/java/com/example/bookstore/dto/PageResponse.java
package com.example.bookstore.dto;
import org.springframework.data.domain.Page;
import java.util.List;
/**
* 分頁查詢的統一回應格式(泛型 DTO)。
*
* Spring Data 的 Page 物件包含大量內部欄位,直接序列化成 JSON
* 會輸出很多用不到的資訊、且格式不受我們控制,
* 因此自訂一個乾淨、穩定的分頁回應格式。
*
* 回應範例:
* {
* "content": [ {...}, {...} ], // 本頁的資料列表
* "page": 0, // 目前頁碼(從 0 開始)
* "size": 10, // 每頁筆數
* "totalElements": 25, // 總資料筆數
* "totalPages": 3, // 總頁數
* "last": false // 是否為最後一頁
* }
*
* @param <T> 資料內容的型別(本專案為 BookResponse)
*/
public record PageResponse<T>(
List<T> content,
int page,
int size,
long totalElements,
int totalPages,
boolean last
) {
/** 把 Spring Data 的 Page 物件轉成我們自訂的格式 */
public static <T> PageResponse<T> from(Page<T> page) {
return new PageResponse<>(
page.getContent(),
page.getNumber(),
page.getSize(),
page.getTotalElements(),
page.getTotalPages(),
page.isLast()
);
}
}
関連記事
BookstoreApiApplication.java
BookstoreApiApplication.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/BookstoreApiApplication.java).
記事を読む →DataInitializer.java
DataInitializer.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/config/DataInitializer.java).
記事を読む →SecurityConfig.java
SecurityConfig.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/config/SecurityConfig.java).
記事を読む →AuthController.java
AuthController.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/controller/AuthController.java).
記事を読む →BookController.java
BookController.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/controller/BookController.java).
記事を読む →ApiErrorResponse.java
ApiErrorResponse.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/dto/ApiErrorResponse.java).
記事を読む →