# API 總覽 ConvertX-CN 提供選用的 API Server,支援 REST 和 GraphQL 兩種 API 介面。 --- ## 功能特色 - 🔐 **JWT 認證**:安全的 API 存取控制 - 🌐 **REST + GraphQL**:雙協議支援 - 🔍 **智慧建議**:轉換失敗時推薦替代引擎 - 🛠️ **20+ 轉換引擎**:與 Web UI 共用完整轉換器 --- ## 快速啟用 API Server 是**選用功能**,不影響 Web UI 使用。 ### 啟用方式 ```bash docker compose --profile api up -d ``` ### 服務端口 | 服務 | 端口 | 說明 | | ---------- | ---- | -------------- | | Web UI | 3000 | 網頁介面 | | API Server | 3001 | REST & GraphQL | --- ## API 端點 ### REST API - **Base URL**: `http://localhost:3001/api/v1` - **Content-Type**: `application/json` 或 `multipart/form-data` ### GraphQL API - **Endpoint**: `http://localhost:3001/graphql` - **Playground**: `http://localhost:3001/graphql`(開發模式) --- ## 認證 所有 API 請求(除健康檢查外)都需要 JWT Bearer Token: ```http Authorization: Bearer ``` ### Token 結構 ```json { "sub": "user-id", "exp": 1234567890, "iat": 1234567890, "email": "user@example.com", "roles": ["user"] } ``` > API Server 只負責驗證 JWT,不負責產生 JWT。Token 應由獨立的認證服務產生。 --- ## 環境變數 | 變數 | 說明 | 預設值 | | --------------- | ------------ | ---------------- | | `API_HOST` | 監聽地址 | `0.0.0.0` | | `API_PORT` | 監聽埠 | `3001` | | `JWT_SECRET` | JWT 驗證密鑰 | (需自行設定) | | `UPLOAD_DIR` | 上傳目錄 | `./data/uploads` | | `OUTPUT_DIR` | 輸出目錄 | `./data/output` | | `MAX_FILE_SIZE` | 最大檔案大小 | `104857600` | --- ## 快速範例 ### 健康檢查 ```bash curl http://localhost:3001/health ``` 回應: ```json { "status": "healthy", "version": "0.1.0", "timestamp": "2026-01-23T10:30:00Z" } ``` ### 列出引擎 ```bash curl -H "Authorization: Bearer " \ http://localhost:3001/api/v1/engines ``` ### 轉換檔案 ```bash curl -X POST \ -H "Authorization: Bearer " \ -F "file=@document.docx" \ -F "engine=libreoffice" \ -F "output_format=pdf" \ http://localhost:3001/api/v1/convert ``` --- ## 相關文件 - [API 端點詳細說明](端點.md) - [API 規格文件](../../api-server/docs/API_SPEC.md) - [架構說明](../../api-server/docs/ARCHITECTURE.md)