S SmartDocs
시리즈: Springboot java 46 줄 · 업데이트 2026-08-14

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()
        );
    }
}

관련 글

Springboot java EN 업데이트 2026-08-14

BookstoreApiApplication.java

BookstoreApiApplication.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/BookstoreApiApplication.java).

글 읽기 →
Springboot java EN 업데이트 2026-08-14

DataInitializer.java

DataInitializer.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/config/DataInitializer.java).

글 읽기 →
Springboot java EN 업데이트 2026-08-14

SecurityConfig.java

SecurityConfig.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/config/SecurityConfig.java).

글 읽기 →
Springboot java EN 업데이트 2026-08-14

AuthController.java

AuthController.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/controller/AuthController.java).

글 읽기 →
Springboot java EN 업데이트 2026-08-14

BookController.java

BookController.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/controller/BookController.java).

글 읽기 →
Springboot java EN 업데이트 2026-08-14

ApiErrorResponse.java

ApiErrorResponse.java — java source code from the Springboot learning materials (Springboot/bookstore-api/src/main/java/com/example/bookstore/dto/ApiErrorResponse.java).

글 읽기 →