907 lines
19 KiB
Markdown
907 lines
19 KiB
Markdown
# DramaLing API 文檔
|
||
|
||
## API 概覽
|
||
|
||
DramaLing API 是一個詞彙學習平台的後端服務,提供 AI 智能分析、音頻合成、用戶認證、詞卡管理、統計分析等功能。
|
||
|
||
**基礎資訊:**
|
||
- 基礎URL: `https://api.dramaling.com` (production) / `http://localhost:5000` (development)
|
||
- API版本: v1
|
||
- 資料格式: JSON
|
||
- 字符編碼: UTF-8
|
||
|
||
## 認證說明
|
||
|
||
### JWT Token 認證
|
||
大部分 API 端點需要 JWT Token 認證,除了標示 `[AllowAnonymous]` 的端點。
|
||
|
||
**認證方式:**
|
||
```
|
||
Authorization: Bearer {JWT_TOKEN}
|
||
```
|
||
|
||
**Token 獲取:**
|
||
透過 `/api/auth/login` 或 `/api/auth/register` 端點獲取 JWT Token。
|
||
|
||
**Token 有效期:** 7天
|
||
|
||
## 錯誤處理
|
||
|
||
### 標準錯誤格式
|
||
```json
|
||
{
|
||
"Success": false,
|
||
"Error": "錯誤訊息",
|
||
"Details": "詳細錯誤資訊",
|
||
"Timestamp": "2023-10-15T10:30:00Z"
|
||
}
|
||
```
|
||
|
||
### HTTP 狀態碼
|
||
- `200 OK` - 請求成功
|
||
- `400 Bad Request` - 請求參數錯誤
|
||
- `401 Unauthorized` - 未授權或Token無效
|
||
- `404 Not Found` - 資源不存在
|
||
- `500 Internal Server Error` - 伺服器內部錯誤
|
||
|
||
---
|
||
|
||
## 1. AI Controller
|
||
**路由:** `/api/ai`
|
||
**認證:** 不需要
|
||
|
||
### 1.1 智能分析英文句子
|
||
**端點:** `POST /api/ai/analyze-sentence`
|
||
**功能:** 分析英文句子的語法、詞彙等資訊
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"InputText": "The beautiful girl is reading a book.",
|
||
"Options": {
|
||
"IncludeGrammar": true,
|
||
"IncludeVocabulary": true,
|
||
"DetailLevel": "detailed"
|
||
}
|
||
}
|
||
```
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"ProcessingTime": 1.23,
|
||
"Data": {
|
||
"Analysis": {
|
||
"Grammar": [],
|
||
"Vocabulary": [],
|
||
"Complexity": "B1"
|
||
},
|
||
"Metadata": {
|
||
"ProcessingDate": "2023-10-15T10:30:00Z"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 1.2 健康檢查
|
||
**端點:** `GET /api/ai/health`
|
||
**功能:** 檢查 AI 服務狀態
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Status": "Healthy",
|
||
"Service": "AI Analysis Service",
|
||
"Timestamp": "2023-10-15T10:30:00Z",
|
||
"Version": "1.0"
|
||
}
|
||
```
|
||
|
||
### 1.3 分析統計資訊
|
||
**端點:** `GET /api/ai/stats`
|
||
**功能:** 獲取 AI 分析服務的統計資訊
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"TotalAnalyses": 1000,
|
||
"CachedAnalyses": 800,
|
||
"CacheHitRate": 0.8,
|
||
"AverageResponseTimeMs": 150,
|
||
"LastAnalysisAt": "2023-10-15T10:30:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 2. Audio Controller
|
||
**路由:** `/api/audio`
|
||
**認證:** 需要
|
||
|
||
### 2.1 文字轉語音
|
||
**端點:** `POST /api/audio/tts`
|
||
**功能:** 將文字轉換為語音
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"Text": "Hello, how are you?",
|
||
"Accent": "us",
|
||
"Speed": 1.0,
|
||
"Voice": "en-US-AriaNeural"
|
||
}
|
||
```
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"AudioUrl": "https://storage.dramaling.com/audio/abc123.mp3",
|
||
"Duration": 2.5,
|
||
"CacheHash": "abc123def456"
|
||
}
|
||
```
|
||
|
||
**參數說明:**
|
||
- `Text`: 要轉換的文字 (最大1000字符)
|
||
- `Accent`: 口音 ("us" 或 "uk")
|
||
- `Speed`: 播放速度 (0.5 - 2.0)
|
||
- `Voice`: 語音ID (可選)
|
||
|
||
### 2.2 獲取快取音頻
|
||
**端點:** `GET /api/audio/tts/cache/{hash}`
|
||
**功能:** 根據快取雜湊值獲取已快取的音頻
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"AudioUrl": "https://storage.dramaling.com/audio/abc123.mp3",
|
||
"Duration": 2.5
|
||
}
|
||
```
|
||
|
||
### 2.3 發音評估
|
||
**端點:** `POST /api/audio/pronunciation/evaluate`
|
||
**功能:** 評估用戶發音品質
|
||
|
||
**請求 (multipart/form-data):**
|
||
- `audioFile`: 音頻檔案 (最大10MB, 支援 WAV/MP3/OGG)
|
||
- `targetText`: 目標文字
|
||
- `userLevel`: 用戶等級 (預設 "B1")
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"OverallScore": 85,
|
||
"AccuracyScore": 88,
|
||
"FluencyScore": 82,
|
||
"ProsodicScore": 85,
|
||
"WordScores": [
|
||
{
|
||
"Word": "hello",
|
||
"Score": 90,
|
||
"Feedback": "Excellent pronunciation"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2.4 獲取支援語音列表
|
||
**端點:** `GET /api/audio/voices`
|
||
**功能:** 獲取可用的 TTS 語音列表
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"US": [
|
||
{
|
||
"Id": "en-US-AriaNeural",
|
||
"Name": "Aria",
|
||
"Gender": "Female"
|
||
}
|
||
],
|
||
"UK": [
|
||
{
|
||
"Id": "en-GB-SoniaNeural",
|
||
"Name": "Sonia",
|
||
"Gender": "Female"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Auth Controller
|
||
**路由:** `/api/auth`
|
||
**認證:** 混合 (部分端點需要認證)
|
||
|
||
### 3.1 用戶註冊
|
||
**端點:** `POST /api/auth/register`
|
||
**認證:** 不需要
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"Username": "john_doe",
|
||
"Email": "john@example.com",
|
||
"Password": "securePassword123"
|
||
}
|
||
```
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||
"User": {
|
||
"Id": "123e4567-e89b-12d3-a456-426614174000",
|
||
"Username": "john_doe",
|
||
"Email": "john@example.com",
|
||
"DisplayName": "john_doe",
|
||
"AvatarUrl": null,
|
||
"SubscriptionType": "free"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**驗證規則:**
|
||
- Username: 3-50字符
|
||
- Email: 有效的電子郵件格式
|
||
- Password: 至少8字符
|
||
|
||
### 3.2 用戶登入
|
||
**端點:** `POST /api/auth/login`
|
||
**認證:** 不需要
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"Email": "john@example.com",
|
||
"Password": "securePassword123"
|
||
}
|
||
```
|
||
|
||
**回應:** 與註冊相同格式
|
||
|
||
### 3.3 獲取用戶資料
|
||
**端點:** `GET /api/auth/profile`
|
||
**認證:** 需要
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"Id": "123e4567-e89b-12d3-a456-426614174000",
|
||
"Email": "john@example.com",
|
||
"DisplayName": "John Doe",
|
||
"AvatarUrl": "https://example.com/avatar.jpg",
|
||
"SubscriptionType": "premium",
|
||
"CreatedAt": "2023-10-15T10:30:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3.4 更新用戶資料
|
||
**端點:** `PUT /api/auth/profile`
|
||
**認證:** 需要
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"DisplayName": "John Smith",
|
||
"AvatarUrl": "https://example.com/new-avatar.jpg",
|
||
"Preferences": {
|
||
"theme": "dark",
|
||
"language": "zh-TW"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3.5 獲取用戶設定
|
||
**端點:** `GET /api/auth/settings`
|
||
**認證:** 需要
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"DailyGoal": 20,
|
||
"ReminderTime": "09:00:00",
|
||
"ReminderEnabled": true,
|
||
"DifficultyPreference": "balanced",
|
||
"AutoPlayAudio": true,
|
||
"ShowPronunciation": true
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3.6 更新用戶設定
|
||
**端點:** `PUT /api/auth/settings`
|
||
**認證:** 需要
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"DailyGoal": 25,
|
||
"ReminderTime": "08:30:00",
|
||
"ReminderEnabled": false,
|
||
"DifficultyPreference": "aggressive",
|
||
"AutoPlayAudio": false,
|
||
"ShowPronunciation": true
|
||
}
|
||
```
|
||
|
||
**設定選項:**
|
||
- `DailyGoal`: 1-100
|
||
- `DifficultyPreference`: "conservative", "balanced", "aggressive"
|
||
|
||
### 3.7 檢查認證狀態
|
||
**端點:** `GET /api/auth/status`
|
||
**認證:** 需要
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"IsAuthenticated": true,
|
||
"UserId": "123e4567-e89b-12d3-a456-426614174000",
|
||
"Timestamp": "2023-10-15T10:30:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Image Generation Controller
|
||
**路由:** `/api/imagegeneration`
|
||
**認證:** 不需要 (暫時)
|
||
|
||
### 4.1 為詞卡生成圖片
|
||
**端點:** `POST /api/imagegeneration/flashcards/{flashcardId}/generate`
|
||
**功能:** 為指定詞卡生成例句圖片
|
||
|
||
**路徑參數:**
|
||
- `flashcardId`: 詞卡ID (GUID)
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"Style": "realistic",
|
||
"Quality": "high",
|
||
"Size": "1024x1024"
|
||
}
|
||
```
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"data": {
|
||
"RequestId": "789e0123-e45f-67g8-h901-234567890abc",
|
||
"Status": "pending",
|
||
"EstimatedTime": 30
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4.2 獲取生成狀態
|
||
**端點:** `GET /api/imagegeneration/requests/{requestId}/status`
|
||
**功能:** 獲取圖片生成請求的狀態
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"data": {
|
||
"RequestId": "789e0123-e45f-67g8-h901-234567890abc",
|
||
"Status": "completed",
|
||
"Progress": 100,
|
||
"ImageUrl": "https://storage.dramaling.com/images/generated/abc123.jpg",
|
||
"CreatedAt": "2023-10-15T10:30:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
**狀態值:**
|
||
- `pending`: 等待中
|
||
- `processing`: 處理中
|
||
- `completed`: 已完成
|
||
- `failed`: 失敗
|
||
- `cancelled`: 已取消
|
||
|
||
### 4.3 取消生成請求
|
||
**端點:** `POST /api/imagegeneration/requests/{requestId}/cancel`
|
||
**功能:** 取消圖片生成請求
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "Generation cancelled successfully"
|
||
}
|
||
```
|
||
|
||
### 4.4 獲取生成歷史
|
||
**端點:** `GET /api/imagegeneration/history`
|
||
**功能:** 獲取用戶的圖片生成歷史
|
||
|
||
**查詢參數:**
|
||
- `page`: 頁碼 (預設: 1)
|
||
- `pageSize`: 每頁數量 (預設: 20)
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"data": {
|
||
"requests": [],
|
||
"pagination": {
|
||
"currentPage": 1,
|
||
"pageSize": 20,
|
||
"totalCount": 0,
|
||
"totalPages": 0
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Options Vocabulary Test Controller
|
||
**路由:** `/api/test/optionsvocabularytest`
|
||
**認證:** 不需要
|
||
**功能:** 測試和開發用的詞彙選項生成服務
|
||
|
||
### 5.1 測試干擾選項生成
|
||
**端點:** `GET /api/test/optionsvocabularytest/generate-distractors`
|
||
**功能:** 測試為目標詞彙生成干擾選項
|
||
|
||
**查詢參數:**
|
||
- `targetWord`: 目標詞彙 (預設: "beautiful")
|
||
- `cefrLevel`: CEFR等級 (預設: "B1")
|
||
- `partOfSpeech`: 詞性 (預設: "adjective")
|
||
- `count`: 生成數量 (預設: 3)
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"targetWord": "beautiful",
|
||
"cefrLevel": "B1",
|
||
"partOfSpeech": "adjective",
|
||
"requestedCount": 3,
|
||
"actualCount": 3,
|
||
"distractors": ["pretty", "lovely", "attractive"]
|
||
}
|
||
```
|
||
|
||
### 5.2 測試詞彙庫充足性
|
||
**端點:** `GET /api/test/optionsvocabularytest/check-sufficiency`
|
||
**功能:** 檢查特定等級和詞性的詞彙庫是否充足
|
||
|
||
**查詢參數:**
|
||
- `cefrLevel`: CEFR等級 (預設: "B1")
|
||
- `partOfSpeech`: 詞性 (預設: "adjective")
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"cefrLevel": "B1",
|
||
"partOfSpeech": "adjective",
|
||
"hasSufficientVocabulary": true
|
||
}
|
||
```
|
||
|
||
### 5.3 測試詳細干擾選項生成
|
||
**端點:** `GET /api/test/optionsvocabularytest/generate-distractors-detailed`
|
||
**功能:** 生成帶詳細資訊的干擾選項
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"targetWord": "beautiful",
|
||
"cefrLevel": "B1",
|
||
"partOfSpeech": "adjective",
|
||
"requestedCount": 3,
|
||
"actualCount": 3,
|
||
"distractors": [
|
||
{
|
||
"Word": "pretty",
|
||
"CEFRLevel": "A2",
|
||
"PartOfSpeech": "adjective",
|
||
"WordLength": 6,
|
||
"IsActive": true
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 5.4 測試詞彙庫覆蓋率
|
||
**端點:** `GET /api/test/optionsvocabularytest/coverage-test`
|
||
**功能:** 測試多種詞性和等級的詞彙庫覆蓋率
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"coverageResults": [
|
||
{
|
||
"cefrLevel": "A1",
|
||
"partOfSpeech": "noun",
|
||
"hasSufficientVocabulary": true,
|
||
"generatedCount": 3,
|
||
"sampleDistractors": ["cat", "dog", "book"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Stats Controller
|
||
**路由:** `/api/stats`
|
||
**認證:** 需要
|
||
|
||
### 6.1 獲取儀表板統計
|
||
**端點:** `GET /api/stats/dashboard`
|
||
**功能:** 獲取用戶學習儀表板的統計資料
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"TotalWords": 150,
|
||
"WordsToday": 12,
|
||
"StreakDays": 7,
|
||
"AccuracyPercentage": 85,
|
||
"TodayReviewCount": 23,
|
||
"CompletedToday": 12,
|
||
"RecentWords": [
|
||
{
|
||
"Word": "negotiate",
|
||
"Translation": "協商",
|
||
"Status": "learned"
|
||
}
|
||
],
|
||
"CardSets": []
|
||
}
|
||
}
|
||
```
|
||
|
||
### 6.2 獲取學習趨勢
|
||
**端點:** `GET /api/stats/trends`
|
||
**功能:** 獲取指定時期的學習趨勢資料
|
||
|
||
**查詢參數:**
|
||
- `period`: 時期 ("week", "month", "year", 預設: "week")
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"Period": "week",
|
||
"DateRange": {
|
||
"Start": "2023-10-09",
|
||
"End": "2023-10-15"
|
||
},
|
||
"DailyCounts": [
|
||
{
|
||
"Date": "2023-10-09",
|
||
"WordsStudied": 15,
|
||
"WordsCorrect": 12,
|
||
"StudyTimeSeconds": 1800,
|
||
"SessionCount": 3,
|
||
"CardsGenerated": 5,
|
||
"Accuracy": 80
|
||
}
|
||
],
|
||
"Summary": {
|
||
"TotalWordsStudied": 105,
|
||
"TotalCorrect": 89,
|
||
"TotalStudyTimeSeconds": 12600,
|
||
"TotalSessions": 21,
|
||
"AverageAccuracy": 85,
|
||
"AverageDailyWords": 15,
|
||
"AverageSessionDuration": 600
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 6.3 獲取詳細統計
|
||
**端點:** `GET /api/stats/detailed`
|
||
**功能:** 獲取詳細的學習統計分析
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"ByDifficulty": {
|
||
"A1": 30,
|
||
"A2": 45,
|
||
"B1": 50,
|
||
"B2": 25
|
||
},
|
||
"ByPartOfSpeech": {
|
||
"noun": 60,
|
||
"verb": 40,
|
||
"adjective": 35,
|
||
"adverb": 15
|
||
},
|
||
"MasteryDistribution": {
|
||
"Mastered": 80,
|
||
"Learning": 60,
|
||
"New": 10
|
||
},
|
||
"LearningCurve": [
|
||
{
|
||
"Date": "2023-10-01",
|
||
"Accuracy": 75,
|
||
"Count": 8
|
||
}
|
||
],
|
||
"Summary": {
|
||
"TotalCards": 150,
|
||
"AverageMastery": 53,
|
||
"OverallAccuracy": 85
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 7. Flashcards Controller
|
||
**路由:** `/api/flashcards`
|
||
**認證:** 不需要 (暫時)
|
||
|
||
### 7.1 獲取詞卡列表
|
||
**端點:** `GET /api/flashcards`
|
||
**功能:** 獲取用戶的詞卡列表
|
||
|
||
**查詢參數:**
|
||
- `search`: 搜尋關鍵詞 (可選)
|
||
- `favoritesOnly`: 僅顯示收藏 (預設: false)
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"Flashcards": [
|
||
{
|
||
"Id": "123e4567-e89b-12d3-a456-426614174000",
|
||
"Word": "beautiful",
|
||
"Translation": "美麗的",
|
||
"Definition": "having beauty; pleasing to the senses",
|
||
"PartOfSpeech": "adjective",
|
||
"Pronunciation": "/ˈbjuːtɪf(ə)l/",
|
||
"Example": "She has a beautiful smile.",
|
||
"ExampleTranslation": "她有美麗的笑容。",
|
||
"IsFavorite": true,
|
||
"DifficultyLevel": "A2",
|
||
"CreatedAt": "2023-10-15T10:30:00Z",
|
||
"UpdatedAt": "2023-10-15T10:30:00Z"
|
||
}
|
||
],
|
||
"Count": 1
|
||
}
|
||
}
|
||
```
|
||
|
||
### 7.2 創建詞卡
|
||
**端點:** `POST /api/flashcards`
|
||
**功能:** 創建新的詞卡
|
||
|
||
**請求體:**
|
||
```json
|
||
{
|
||
"Word": "beautiful",
|
||
"Translation": "美麗的",
|
||
"Definition": "having beauty; pleasing to the senses",
|
||
"PartOfSpeech": "adjective",
|
||
"Pronunciation": "/ˈbjuːtɪf(ə)l/",
|
||
"Example": "She has a beautiful smile.",
|
||
"ExampleTranslation": "她有美麗的笑容。"
|
||
}
|
||
```
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"Id": "123e4567-e89b-12d3-a456-426614174000",
|
||
"Word": "beautiful",
|
||
"Translation": "美麗的",
|
||
"DifficultyLevel": "A2",
|
||
"CreatedAt": "2023-10-15T10:30:00Z"
|
||
},
|
||
"Message": "詞卡創建成功"
|
||
}
|
||
```
|
||
|
||
### 7.3 獲取單個詞卡
|
||
**端點:** `GET /api/flashcards/{id}`
|
||
**功能:** 獲取特定詞卡的詳細資訊
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"Id": "123e4567-e89b-12d3-a456-426614174000",
|
||
"Word": "beautiful",
|
||
"Translation": "美麗的",
|
||
"Definition": "having beauty; pleasing to the senses",
|
||
"PartOfSpeech": "adjective",
|
||
"Pronunciation": "/ˈbjuːtɪf(ə)l/",
|
||
"Example": "She has a beautiful smile.",
|
||
"ExampleTranslation": "她有美麗的笑容。",
|
||
"IsFavorite": true,
|
||
"DifficultyLevel": "A2",
|
||
"CreatedAt": "2023-10-15T10:30:00Z",
|
||
"UpdatedAt": "2023-10-15T10:30:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 7.4 更新詞卡
|
||
**端點:** `PUT /api/flashcards/{id}`
|
||
**功能:** 更新特定詞卡的資訊
|
||
|
||
**請求體:** 與創建詞卡相同格式
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Data": {
|
||
"Id": "123e4567-e89b-12d3-a456-426614174000",
|
||
"Word": "beautiful",
|
||
"Translation": "美麗的",
|
||
"UpdatedAt": "2023-10-15T10:30:00Z"
|
||
},
|
||
"Message": "詞卡更新成功"
|
||
}
|
||
```
|
||
|
||
### 7.5 刪除詞卡
|
||
**端點:** `DELETE /api/flashcards/{id}`
|
||
**功能:** 刪除特定詞卡
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"Message": "詞卡已刪除"
|
||
}
|
||
```
|
||
|
||
### 7.6 切換收藏狀態
|
||
**端點:** `POST /api/flashcards/{id}/favorite`
|
||
**功能:** 切換詞卡的收藏狀態
|
||
|
||
**回應:**
|
||
```json
|
||
{
|
||
"Success": true,
|
||
"IsFavorite": true,
|
||
"Message": "已加入收藏"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 請求/回應範例
|
||
|
||
### 完整的詞卡創建流程
|
||
|
||
**1. 創建詞卡**
|
||
```bash
|
||
curl -X POST "https://api.dramaling.com/api/flashcards" \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
||
-d '{
|
||
"Word": "accomplish",
|
||
"Translation": "完成",
|
||
"Definition": "to finish something successfully",
|
||
"PartOfSpeech": "verb",
|
||
"Pronunciation": "/əˈkʌmplɪʃ/",
|
||
"Example": "She accomplished her goal.",
|
||
"ExampleTranslation": "她完成了目標。"
|
||
}'
|
||
```
|
||
|
||
**2. 為詞卡生成圖片**
|
||
```bash
|
||
curl -X POST "https://api.dramaling.com/api/imagegeneration/flashcards/{flashcard_id}/generate" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"Style": "realistic",
|
||
"Quality": "high",
|
||
"Size": "1024x1024"
|
||
}'
|
||
```
|
||
|
||
**3. 生成音頻**
|
||
```bash
|
||
curl -X POST "https://api.dramaling.com/api/audio/tts" \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
||
-d '{
|
||
"Text": "She accomplished her goal.",
|
||
"Accent": "us",
|
||
"Speed": 1.0
|
||
}'
|
||
```
|
||
|
||
### 用戶註冊和認證流程
|
||
|
||
**1. 註冊新用戶**
|
||
```bash
|
||
curl -X POST "https://api.dramaling.com/api/auth/register" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"Username": "john_doe",
|
||
"Email": "john@example.com",
|
||
"Password": "securePassword123"
|
||
}'
|
||
```
|
||
|
||
**2. 登入獲取Token**
|
||
```bash
|
||
curl -X POST "https://api.dramaling.com/api/auth/login" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"Email": "john@example.com",
|
||
"Password": "securePassword123"
|
||
}'
|
||
```
|
||
|
||
**3. 使用Token獲取用戶資料**
|
||
```bash
|
||
curl -X GET "https://api.dramaling.com/api/auth/profile" \
|
||
-H "Authorization: Bearer YOUR_JWT_TOKEN"
|
||
```
|
||
|
||
## 開發注意事項
|
||
|
||
### 暫時的設定
|
||
- FlashcardsController 和 ImageGenerationController 目前設為 `[AllowAnonymous]` 用於開發測試
|
||
- 使用固定的測試用戶ID: `00000000-0000-0000-0000-000000000001`
|
||
- 部分統計資料使用模擬數據
|
||
|
||
### 生產環境配置
|
||
- 需要設定正確的 JWT Secret 環境變數
|
||
- 需要配置 Azure Speech Service
|
||
- 需要設定檔案存儲服務
|
||
|
||
### API 版本控制
|
||
目前所有 API 都在 v1 版本,未來新功能將透過版本控制進行管理。
|
||
|
||
### 錯誤處理最佳實踐
|
||
- 始終檢查 `Success` 欄位
|
||
- 根據HTTP狀態碼處理不同錯誤類型
|
||
- 實現適當的重試機制
|
||
- 記錄和監控API錯誤
|
||
|
||
---
|
||
|
||
**文檔版本:** 1.0
|
||
**最後更新:** 2023-10-15
|
||
**聯絡資訊:** api-support@dramaling.com |