線上書店後端 REST API,本專案是《Spring Boot 後端開發實戰教材》的隨附程式碼, 所有檔案都加上了詳細的中文註解,建議搭配教材 PDF 閱讀。
技術棧
- Spring Boot 3.5.4(Web、Data JPA、Security、Validation)
- MySQL 8 + Hibernate(ORM)
- JWT(JJWT 0.12.6)認證與角色授權
- Docker 多階段建置 + Docker Compose
啟動方式
本機開發
# 先啟動 MySQL(Docker 範例):
docker run --name bookstore-mysql \
-e MYSQL_ROOT_PASSWORD=root1234 \
-e MYSQL_DATABASE=bookstore_db \
-p 3306:3306 -d mysql:8.4
# 啟動應用程式
mvn spring-boot:run
Docker Compose 一鍵啟動
docker compose up -d --build # 啟動 MySQL + API
docker compose logs -f app # 觀察啟動日誌
docker compose down # 停止(資料保留)
API 總覽
| 方法 | 路徑 | 說明 | 權限 |
|---|---|---|---|
| POST | /api/auth/register | 註冊 | 公開 |
| POST | /api/auth/login | 登入取得 JWT | 公開 |
| GET | /api/books | 分頁查詢 | 公開 |
| GET | /api/books/{id} | 單筆查詢 | 公開 |
| GET | /api/books/search?keyword= | 關鍵字搜尋 | 公開 |
| POST | /api/books | 新增書籍 | USER / ADMIN |
| PUT | /api/books/{id} | 完整更新 | USER / ADMIN |
| PATCH | /api/books/{id} | 部分更新 | USER / ADMIN |
| DELETE | /api/books/{id} | 刪除書籍 | 僅 ADMIN |
測試帳號
| 帳號 | 密碼 | 角色 |
|---|---|---|
| admin | Admin@123 | ROLE_ADMIN |
| user | User@123 | ROLE_USER |
需要認證的請求請加上 Header:Authorization: Bearer <token>。
設定
src/main/resources/application.yml 支援以環境變數覆寫:
DB_HOST、DB_PORT、DB_NAME、DB_USERNAME、DB_PASSWORD、
JWT_SECRET、JWT_EXPIRATION_MS。