# 第八屆黑客松 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>