iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

今天繼續來製作earnahaCandidate Exam: Back-End/Full-Stack Engineer,今天主要來設計依據作業需求所做的資料庫架構設計與API介面。

設計資料庫架構:

Users Table

  • user_id: 主鍵,唯一識別每個用戶。
  • email: 用戶的電子郵件地址。
  • password: 用戶定義的密碼(加密儲存)。
  • name: 從Google OAuth獲取的用戶名或用戶自訂的名稱。
  • sign_up_timestamp: 用戶註冊的時間戳。
  • email_verified: 布林值,表示電子郵件是否已經驗證。
  • last_login_timestamp: 用戶最後一次登錄的時間戳。
  • total_logins: 用戶總登錄次數。

Sessions Table

  • session_id: 主鍵,唯一識別每個session。
  • user_id: 關聯到Users Table的外鍵。
  • start_timestamp: session開始的時間戳。
  • end_timestamp: session結束的時間戳。
Table Users {
  user_id INT [pk, increment]
  email VARCHAR(255) [unique]
  password VARCHAR(255)
  name VARCHAR(255)
  sign_up_timestamp TIMESTAMP
  email_verified BOOLEAN
  last_login_timestamp TIMESTAMP
  total_logins INT
}

Table Sessions {
  session_id INT [pk, increment]
  user_id INT [ref: > Users.user_id]
  start_timestamp TIMESTAMP
  end_timestamp TIMESTAMP
}

https://ithelp.ithome.com.tw/upload/images/20231009/20140358k01aiqaBzk.png

設計API介面:

User Registration & Authentication

  • POST /api/users/register: 註冊新用戶。
  • POST /api/users/login: 用戶登錄。
  • POST /api/users/login/google: 使用Google OAuth登錄。
  • POST /api/users/logout: 用戶登出,清除cookies。

Profile Management

  • GET /api/users/profile: 取得當前用戶的個人資料。
  • PUT /api/users/profile: 更新當前用戶的名稱。
    • Request Body: { "name": "new_name" }
  • PUT /api/users/password: 重設用戶密碼。
    • Request Body: { "old_password": "old_password", "new_password": "new_password" }

Email Verification

  • POST /api/users/verify: 驗證用戶的電子郵件地址。
  • POST /api/users/resend_verification: 重新發送驗證電子郵件。

Dashboard & Analytics

  • GET /api/dashboard/users: 取得所有註冊用戶的列表。
  • GET /api/dashboard/statistics: 取得用戶統計數據。

上一篇
[Day 24] Take Home Assignment 之開始實戰啦
下一篇
[Day 26] Simple Auth App:專案始動
系列文
從實戰中學習:Take Home Assignment review & refactor30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言