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
运行测试:
帆工匠测试