# `GET` /api/tweets
<!-- 一級標題自動成為筆記名稱 -->
## API 功能
取得全站的所有推文。
* 需註冊才可進入。不分role。
* 回傳全站的所有tweets。
* 資料依照tweet成立時間排序(由新到舊)。
* 每筆tweet資料中包含
* tweet的作者資料(id, name, account, avatar)
* tweet的like數量(likeCount)
* tweet的reply數量(replyCount)
* 目前使用者是否like這則推文(isLiked)
### 邏輯分析(後端看的)
:::spoiler 運作邏輯
1. 找出Tweets中全部資料
2. 照createAt反向排序
3. 查詢關聯資料
4. 整理資料(raw, nest)後回傳json
:::
## 前端傳入資料
### parameters
None
### req.body
None
## 後端回傳資料
### 成功
```json
// status code: 200
[
{
"id": 43,
"description": "balabala",
"createdAt": "2022-07-30T09:39:15.000Z",
"replyCount": 3,
"likeCount": 2,
"User": {
"id": 6,
"name": "user5",
"account": "user5",
"avatar": "https://avatar-url"
},
"isLiked": false
},
{
"id": 49,
"description": "balabababa",
"createdAt": "2022-07-29T17:27:20.000Z",
"replyCount": 3,
"likeCount": 0,
"User": {
"id": 6,
"name": "user5",
"account": "user5",
"avatar": "https://avatar-url"
},
"isLiked": false
},
// ...more tweets
]
```
### 失敗
發生原因:使用者token驗證不通過。
```javascript
// status code: 401
{
"status": "error",
"message": "Unauthorized. Please login first."
}
```
發生原因:資料庫沒有資料。
```javascript
// status code: 404
{
"status": "error",
"message": "Tweet is not found"
}
```
## 相關連結
* [回首頁](https://hackmd.io/@twitter-2022/index)
* [API 總表](/Gl56cI2LQ5ObBpmQnbnphw)
###### tags: `API-doc`