bulletin board API
1.0.0
建立用於教育目的的最小可行公告板 REST API。
取得所有標籤、貼文和使用者的列表
在清單中搜尋
用戶註冊
註冊用戶可以:
新增貼文
對現有貼文發表評論
刪除和編輯您的貼文和評論
PHP 8.1+
拉拉維爾 10
作曲家
MySQL
POST
/api/v1/auth/register
註冊姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
姓名 | 必需的 | 細繩 | 姓名 |
暱稱 | 必需的 | 細繩 | 人類可讀的識別符 |
電子郵件 | 必需的 | 細繩 | 電子郵件 |
密碼 | 必需的 | 細繩 | 密碼 |
密碼確認 | 必需的 | 細繩 | 密碼確認 |
201
CREATED
{ "access_token", "token_type": "Bearer" }
POST
/api/v1/auth/login
登入姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
電子郵件 | 必需的 | 細繩 | 電子郵件 |
密碼 | 必需的 | 細繩 | 密碼 |
200
OK
{ "access_token", "token_type":"Bearer" }
POST
/api/v1/auth/logout
註銷鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
204
NO CONTENT
GET
/api/v1/profile
取得經過驗證的使用者設定檔鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
200
OK
{ "data": { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" } }
GET
/api/v1/profile/posts
取得經過驗證的使用者的個人資料和帖子鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
每頁 | 選修的 | 整數 | 每頁貼文數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug", }, ... ], "comments_count" } ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/profile/comments
取得經過驗證的使用者的個人資料和評論鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
每頁 | 選修的 | 整數 | 每頁評論數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "comment_id", "body", "created_at":, "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/users
取得所有用戶姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
q | 選修的 | 細繩 | 搜尋查詢 |
每頁 | 選修的 | 整數 | 每頁用戶數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" }, ... ], "links": {...}, "meta": {...} }
GET
/api/v1/users/{nickname}
取得用戶200
OK
{ "data": { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" } }
GET
/api/v1/users/{nickname}/posts
取得使用者及其帖子姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
每頁 | 選修的 | 整數 | 每頁貼文數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ], "comments_count" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/users/{nickname}/comments
取得使用者及其評論姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
每頁 | 選修的 | 整數 | 每頁評論數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "comment_id", "body", "created_at":, "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/tags
取得所有標籤姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
q | 選修的 | 細繩 | 搜尋查詢 |
200
OK
{ "data": [ { "tag_id", "name", "slug", "post_count" }, ... ] }
GET
/api/v1/tags/{slug}
取得標籤及其帖子姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
每頁 | 選修的 | 整數 | 每頁貼文數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname" }, ], "links": {...}, "meta": {...}, "tag": { "tag_id", "name", "slug" } }
GET
/api/v1/posts
獲取所有帖子姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
q | 選修的 | 細繩 | 搜尋查詢 |
每頁 | 選修的 | 整數 | 每頁貼文數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "post_id, "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ], "comments_count" }, ... ], "links": {...}, "meta": {...} }
GET
/api/v1/posts/{id}
取得貼文及其評論姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
每頁 | 選修的 | 整數 | 每頁評論數 |
頁 | 選修的 | 整數 | 頁碼 |
200
OK
{ "data": [ { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "post": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] } }
POST
/api/v1/posts
新增帖子鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
標題 | 選修的 | 細繩 | 標題 |
價格 | 選修的 | 漂浮 | 價格 |
描述 | 選修的 | 細繩 | 描述 |
標籤[id] | 選修的 | 數組[整數] | 標籤 ID 數組 |
201
CREATED
{ "data": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] }, }
PUT
/api/v1/posts/{id}
編輯帖子鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
標題 | 選修的 | 細繩 | 標題 |
價格 | 選修的 | 漂浮 | 價格 |
描述 | 選修的 | 細繩 | 描述 |
標籤[id] | 選修的 | 數組[整數] | 標籤 ID 數組 |
200
OK
{ "data": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] }, }
DELETE
/api/v1/posts/{id}
刪除帖子鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
204
NO CONTENT
POST
/api/v1/posts/{id}/comments
為貼文新增評論鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
身體 | 必需的 | 細繩 | 評論文字 |
201
CREATED
{ "data": { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname", }, }
PUT
/api/v1/comments/{id}
編輯評論鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
姓名 | 類型 | 資料類型 | 描述 |
---|---|---|---|
身體 | 必需的 | 細繩 | 評論文字 |
200
OK
{ "data": { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname", } }
DELETE
/api/v1/comments/{id}
刪除評論鑰匙 | 價值 |
---|---|
授權 | 持有者{令牌} |
204
NO CONTENT
克隆此存儲庫並轉到您的專案資料夾:
git 克隆 https://github.com/AllaAverina/bulletin-board-APIcdBulletin-board-API
安裝依賴項:
作曲家安裝
啟動MySQL,在.env.example檔案中修改連接資料庫的參數,然後執行:
複製 .env.example .env
運行命令來運行遷移:
php 工匠遷移
或者,如果您想用虛擬資料填充資料庫:
php artisan 遷移 --seed
啟動網頁伺服器:
php工匠服務
在瀏覽器中打開,例如http://localhost:8000/api/v1/posts
建立一個新的資料庫用於測試,更改參數以在 .env.testing 檔案中連接到該資料庫並執行:
php工匠測試
克隆此存儲庫並轉到您的專案資料夾:
git 克隆 https://github.com/AllaAverina/bulletin-board-APIcdBulletin-board-API
安裝依賴項:
docker 運行--rm -u "$(id -u):$(id -g)" -v "$(密碼):/var/www/html" -w /var/www/html laravelsail/php82-composer:最新 作曲家安裝 --ignore-platform-reqs
建立一個 .env 檔案:
cp.env.docker.examlpe.env
建立 shell 別名並執行 sail:
別名 sail='[ -f sail ] && sh sail || sh 供應商/bin/sail'sail up -d
運行命令來運行遷移:
風帆工匠遷徙
或者,如果您想用虛擬資料填充資料庫:
風帆工匠遷移--種子
在瀏覽器中打開,例如http://localhost/api/v1/posts
若要停止容器,請使用:
航行停止
設定 .env.testing 檔案:
cp .env.docker.testing .env.testing
運行測試:
帆工匠測試