# 第八屆黑客松 API 規格 [TOC] ## 此文件服用方法 :::info - 參數前有 * 代表必要參數 :accept: <- 若看見此圖示,代表 API 已經上線。 :closed_lock_with_key: <- 看見此圖示,就是需要登入才能使用的 API ::: ## (範例)登入 ### (範例)使用者登入 :accept: `/api/User/Login` :::spoiler - 要傳的參數: - *`account`: string, 使用者帳號(信箱) - *`password`: string, 密碼 - `keepState`: boolean, 保持登入 - 回傳的內容 - 登入成功 ```json= { "code": 1, "message": "Login success.", "data": { "session_id": "grhch426cc3t8sdfhulga8tggsj0ao3k" } } ``` - 帳號或密碼錯誤 ```json= { "code": 0, "message": "Login failed, account or password incorrect.", "data": [] } ``` ::: ### (範例)獲取個人資訊 :closed_lock_with_key: :accept: `/api/User/getUserInformation` :::spoiler - paramters: - None. - response: - success: 獲取成功 ```json { code: 1, message: "Success.", "data": { "name": "222222", "mail": "111@gmail.com", "account": "11111", "total_answered_amount": "0", "total_correct_amount": "0", "photo_path": null } } ``` ::: ## 使用者 ### 使用者登入 :accept: POST `/api/Customer/Login` :::spoiler - 要傳的參數: - *`account`: string, 使用者帳號 - *`password`: string, 密碼 - 回傳的內容 - 登入成功 ```json= { "code": 1, "message": "成功登入", "session": "5tptkh6ljcukpun2kdkvkcdhj64a70un" } ``` - 帳號或密碼錯誤 ```json= { "message": "您必須提供帳號以及密碼" } ``` ::: ### 使用者註冊 :accept: POST `/api/Customer/Register` :::spoiler - 要傳的參數: - *`name`: string, 使用者名稱 - *`account`: string, 使用者帳號(學號) - *`email`: string, 使用者信箱 - *`phoneNumber`: string, 手機號碼 - *`password`: string, 密碼 - *`passwordConfirm`: string, 確認密碼 - 回傳的內容 - 註冊成功 ```json= { "code": 1, "message": "Register success." } ``` - 註冊失敗 ```json= { "code": 0, "message": { "name": "Name cannot be empty.", "account": "Account cannot be empty.", "email": "Email cannot be empty.", "phoneNumber": "Phone Number cannot be empty.", "password": "Password cannot be empty.", "passwordConfirm": "Password Confirm cannot be empty." } } ``` ::: ### 使用者基本資料顯示 :closed_lock_with_key: `/api/Customer/setting` :::spoiler - 要傳的參數: - *`id`: int, 使用者ID - 回傳的內容 - 取得成功 ```json= { "name": "唯一顧客", "account": "n123", "email": "ka123@gmail.com", "phonenumber": "0922798" } ``` - 取得失敗 ```json= { "name": [], "account": [], "email": [], "phonenumber": [] } ``` ::: ### 使用者基本資料修改 :closed_lock_with_key: `/api/Customer/settingUpdate` :::spoiler - 要傳的參數: - *`id`: int, 使用者ID - *`email`: string, 使用者信箱 - *`phonenumber`: string, 使用者電話 - *`password`: string, 使用者密碼 - 回傳的內容 - 修改成功 ```json= { "code": 1, "message": "修改成功" } ``` - 修改失敗 (`id`為空|不存在) ```json= { "code": 0, "message": "未知錯誤" } ``` - 修改失敗 (信箱|電話|密碼為空) ```json= { "code": -1, "message": "您必須提供 信箱 \n您必須提供 電話號碼 \n您必須提供 密碼 \n" } ``` - 修改失敗 (無效信箱) ```json= { "code": -1, "message": "請輸入有效信箱\n" } ``` - 修改失敗 (信箱已註冊) ```json= { "code": -1, "message": "您輸入的信箱已被註冊過,請重新確認\n" } ``` - 修改失敗 (電話號碼大於10數) ```json= { "code": -1, "message": "電話號碼 欄位長度錯誤\n" } ``` - 修改失敗 (電話欄外輸入數字以外字元) ```json= { "code": -1, "message": "電話號碼 只能輸入數字,請重新輸入\n" } ``` ::: ### 將商品加入購物車 :closed_lock_with_key: `/api/Customer/Order/getMealDetails` :::spoiler - 要傳的參數: - *`mealId`: int, 餐點 ID - 回傳的內容 ::: ## 商家 ### 商家登入 :accept: POST `/api/Store/Login` :::spoiler - 要傳的參數: - *`email`: string, 使用者帳號(信箱) - *`password`: string, 密碼 - 回傳的內容 - 登入成功 ```json= { "code": 1, "message": "Success", "token": "hnr8516ac5pujv4arv7i45ge7ag5cd71", "errors": [] } ``` - 登入失敗,資料格式不對 ```json= { "code": -1, "message": "登入失敗,資料格式不對", "token": "", "errors": { "email": "信箱格式不正確", "password": "您必須提供密碼" } } ``` - 帳號或密碼錯誤 ```json= { "code": -1, "message": "登入失敗,帳號或密碼錯誤", "token": "", "errors": [] } ``` ::: ### 商家註冊 :accept: POST `/api/Store/Register` :::spoiler - 要傳的參數: - *`name`: string, 名稱 - *`email`: string, 信箱 - *`location`: string, 商店位置 - *`introdution`: string, 商店簡介 - *`business_hours`: string, 商店營業時間 - *`password`: string, 密碼 - *`passwordConfirm`: string, 確認密碼 - 回傳的內容 - 註冊成功 ```json= { "code": 1, "message": "註冊成功", "data": {} } ``` - 註冊失敗,資料格式不對 ```json= { "code": 0, "message": { "name": "名稱不可留白", "email": "email不可留白", "location": "地點不可留白", "introdution": "介紹不可留白", "password": "密碼不可留白", "confirmPassword": "密碼不可留白" }, "data": {} } ``` ::: ### 單一店家資訊 :closed_lock_with_key: :accept: GET `/api/Store/Info` :::spoiler - 要傳的參數: - *`id`: int, 店家id - 回傳的內容 - 取得成功 ```json= { "store_name": "teststore", "location": "teststore", "meals": [ { "meal_name": "test_meal", "meal_introduction": "test_meal_introduction", "price": "100", "photo": "1" }, { "meal_name": "test_meal2", "meal_introduction": "test_meal_introduction2", "price": "200", "photo": "2" } ] } ``` - 未給予參數 ```json= { "code": 0, "message": "請給予店家編號" } ``` - 編號無法配對店家 ```json { "code": 0, "message": "查無店家" } ``` ::: ### 單一店家相關評論 :closed_lock_with_key: POST `api/store/evaluation` :::spoiler - 要傳的參數: - *`storeId`: int, 店家id - 回傳的內容 - 取得成功 ```json= { "evaluations": [ { "name": "test_name", "stars": "3", "comment": "test_comment", "time": "2022-09-18 15:40:05" }, { "name": "test_name", "stars": "4", "comment": "test_comment2", "time": "2022-09-18 15:40:26" } ] } ``` - 未給予參數 ```json= { "code" => 0, "message" => "請給予店家編號", } ``` ::: --- ## 需要的 APIs - 店家 - 獲得所有店家 - 獲得單一店家資訊 - 購物車 - 加到購物車 - 獲得購物車清單 - <!-- 以下勿動 --> <style> .markdown-body li > span+code { color: red !important; } details { border: 1px solid gray; border-radius: 10px; padding: 15px; margin: 5px; box-shadow: 5px 5px lightgray; cursor: pointer; } details summary:after { content: "詳細資訊"; } </style>