---
# System prepended metadata

title: Let's Eat API Documentation

---

Let's Eat API Documentation
===

## Overview

這個 API 規格有盡量遵守 [`REST API`](https://en.wikipedia.org/wiki/Representational_state_transfer) 的規則。每個 URL 資源都是一個名詞，例如 `user` 就是除存有關使用者的資料。這些資源可以透過 [`http methods`](https://tools.ietf.org/html/rfc7231#section-4) 來做存取，例如用 `get` 取得資料，`post` 新增資料。有些資源屬於關聯式資料，例如朋友關係，這些關聯被設計成獨立資源，一樣是透過 `http method` 存取。

這份文件可以幫助你了解這份 API 的設計架構，指示不同操作應該要使用哪些 API，詳細的 API 參數規格請參考 [這份文件](https://www.csie.ntu.edu.tw/~b09902102/swagger-ui/)

## 資源

這份 API 目前有以下資源:

- User: 使用者
- Event: 吃飯團
- Member: 吃飯團成員 (User <-> Event)
- Whitelist 吃飯團白名單 (User <-> Event)
- Blacklist 吃飯團黑名單 (User <-> Event)
- Invitation 吃飯團邀請 (User <-> Event)
- Request 吃飯團申請 (User <-> Event)
- Friend 好友名單 (User <-> User)

## Use Cases

列出一些例子，展示這些功能要如何透過這份 API 實現。

### 建立使用者帳號

使用者資源是 `User`，建立的動作是 `post`，因此要建立使用者就是

`POST: /users`

### 建立吃飯團

同理

`POST: /events`

### 加好友

目前設計好友是單向的 follower follwee 關係，同樣使用 `post` 建立

`POST: /friends`

### 邀請好友加入吃飯團

首先可能需要列出所有好友，取得資料使用 `get`，因為是找出所有 「好友」 資料

`GET: /friends`

然後在對想要邀請的人建立邀請關係

`POST: /invitation`

> `whitelist`, `blacklist`, `request` 也是相同概念

### 同意吃飯邀請

把吃飯邀請的狀態改成 `accept`，是使用 `PUT` 修改，因為是修改特定的邀請，所以是對要改的 ID 的資源修改。

`PUT: /invitations/{invitationID}`

接著後端會把該邀請對應到的使用者與對應的吃飯團建立成員關係。

> 這邊設計上會對 member 產生副作用，不確定是不是好的設計，或是如何修改

### 踢出吃飯團

要踢出吃飯團就是刪除成員關係，使用 `delete` 刪除，要對關係的 ID 操作

`DELTE: /members/{memberID}`

### 搜尋附近的好友吃飯團

`GET: /events`

解釋可能會用到的參數：

- limit: 取得資料數量
- offset: 取得資料位置（從哪裡開始）
- position: 搜尋中心座標
- distanceKM: 搜尋半徑
- friendsOf: 限定朋友


## Contribution

### 加入 github organization:

在下面填寫 email:

- abc@xy.z


### 問問題

如果有任何功能不確定要如何透過這份 API 實現，可以幫忙問問題，格式如下：

#### 如何拒絕邀請

by: ToMmyDong
詳細說明： 不能更詳細了
回覆:

`PUT /invitations/{invitationID}` 然後把 state 設成 decline

#### 如何在吃飯群傳訊息

by: ToMmyDong
詳細說明： 不能更詳細了
回覆:

目前沒有這個功能，之後會考慮加入






