# `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`