A forums build with laravel.
我也不知道要做成一个什么东西。
FMock墨客社区。
- PHP >= 7.2.5
- Mysql
- Redis
- Nodejs
- ElasticSearch = 7.4.2
- ElasticSearch-analysis-ik 7.4.2
- RabbitMQ
git clone https://github.com/ShyZhen/fmock.git
copy .env.example .env
and edit .env
除了基本的APP配置、数据库配置、以及redis缓存配置(前四个代码块),仍需配置Smtp 邮箱服务、Sms短信服务、Github OAuth 第三方登录。 根据自己vhost配置
APP_URL
CLIENT_URL
SERVER_URL
ADMIN_URL
如果想上传文件到七牛,需要开启.env
中的QiniuService=true
,并配置好七牛的各项参数。
- composer 全量镜像不稳定,推荐更换
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer self-update
&&composer install
php artisan fmock:install
chmod -R 766 storage/ && chmod -R 766 bootstrap/cache/
根据自己实际用户组情况设置777或者766
使用redis做队列:php artisan queue:work redis --queue=FMockTestQueue,sendSmsQueue --daemon --quiet --delay=3 --sleep=3 --tries=3
- 新建es类并继承抽象类
Base/ElasticSearch
,例如PostElasticSearch - 必须实现抽象函数
createIndex
和getIndexName
,这样就可以完全使用基类中的任意方法(其中createIndex方法仅在es:init中使用) - 使用方法参考
Web/TestController@esTest
php artisan es:init
, 该命令将创建文章默认的index,并设置文章默认的mappings
- 需要提前开启env中的ESToObserver
- 创建Observers,例如
app/Observers/PostObserver.php
- 在
app/Providers/ObserversServiceProvider.php
中添加观察者模型,例如Post::observe(PostObserver::class);
- 函数类库在
\app\Library\RabbitMQ
下,分别为生成类、消费类、消费回调业务函数
- 启动消费脚本前要确定队列、交换机等存在,可以事先调用一次send:
$rabbitMQ = new Publish();
$params = ['key1' => 'value1', 'key2' => 'value2', 'action' => 'sms'];
print_r($rabbitMQ->send(env('RabbitMQQueueName'), json_encode($params)));
- 启动消费脚本命令:
php artisan rabbitmq:start
- 启动消费脚本之后,所有的回调逻辑处理函数全部在
app\Library\RabbitMQ\RabbitMQHandle.php
文件中,你只需要更新此处即可
- 支持邮箱、手机号sms(阿里短信服务)验证码发送,以及完善的正则匹配
- 支持邮箱、手机号(中国)登录注册
- 多重验证,包括IP限制,账号尝试失败限制,有效避免爆破
- 完全前后端分离模式,token鉴权,多端分开部署
- 共用一套API接口代码,便于维护
- 代码分层架构,controller service repo model 便于扩展
- 支持GitHub第三方登录(后续会支持微信登录)
- 支持微信小程序登录
- 支持切换上传图片到七牛云与本地存储,使用七牛融合CDN进行静态资源加速
- 七牛图片样式:fmock 最大宽度1080缩放,供内容详情使用;fmockmin 固定宽高剪裁,供首页海报图使用;
- 记录用户上传文件日志,用户后续控制
- 支持社区的基本操作:普通文章模块、问答模块、点赞、评论、搜藏
- Delta格式富文本编辑器
- 支持粉丝系统,查看用户关注、粉丝列表等操作,支持redis以及关系型数据库两种存储方式,量小推荐使用数据库
- 支持ElasticSearch,使用Observer自动插入ES数据
- 支持短视频上传七牛并切片、添加水印等操作(记得更新相关文件上传配置,例如nginx的client_body_temp/client_body_buffer_size 10/client_max_body_size 1024m)
-
registerCode | 发送注册验证码
-
register | 用户注册
-
getAccountStatus | 检查用户状态
-
login | 用户登录
-
passwordCode | 发送改密验证码
-
password | 修改密码
-
myInfo | 我的信息
-
githubLogin | 获取GitHub登录url
-
userInfo | 获取指定用户信息
-
updateMyInfo | 更新个人信息
-
updateMyName | 更新个人昵称
-
uploadImage | 上传图片
-
uploadAvatar | 更换用户头像
-
logout | 登出
-
uploadVideo | 上传视频并入库
-
getAllPosts | 获取首页文章列表
-
getPostByUuid | 获取指定文章
-
createPost | 新建文章
-
updatePost | 更新指定文章
-
deletePost | 删除指定文章
-
getAnswerByPostUuid | 获取指定文章的回答
-
getAnswerByUuid | 获取指定回答详情
-
createAnswer | 新建(回答)文章
-
updateAnswer | 更新指定(回答)文章
-
deleteAnswer | 删除指定(回答)文章
-
getMyFollowedPosts | 获取我关注的所有文章
-
followedPost | 关注指定文章
-
unFollow | 取消关注文章
-
likePost | 赞/取消赞(文章)
-
dislikePost | 踩/取消踩(文章)
-
statusPost | 查看赞/踩/收藏状态(文章)
-
likeAnswer | 赞/取消赞(回答)
-
dislikeAnswer | 踩/取消踩(回答)
-
statusAnswer | 查看赞/踩/收藏状态(回答)
-
likeComment | 赞/取消赞(评论)
-
dislikeComment | 踩/取消踩(评论)
-
statusComment | 查看赞/踩/收藏状态(评论)
-
likeVideo | 赞/取消赞(视频)
-
dislikeVideo | 踩/取消踩(视频)
-
statusVideo | 查看赞/踩/收藏状态(视频)
-
getCommentByPostUuid | 获取文章评论
-
createComment | 创建评论、回复
-
deleteComment | 删除自己的评论、回复
-
userComment | 某用户发布的所有评论(包括自己)
-
userPost | 某用户发布的所有文章(包括自己)
-
userAnswer | 某用户发布的所有(回答)文章(包括自己)
-
follow | 关注、取关某用户
-
status | 查看某个用户与自己的关注、互粉状态
-
getFansList | 查看某个用户的关注列表(包括自己)
-
getFansList | 查看某个用户的粉丝列表(包括自己)
-
getTrack | 查看我关注的用户们最新发布的文章、回答、视频
- POST
server_url/V1/register-code
- 发送注册验证码
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
account |
Y | String | N | <255 | 邮箱或者手机,用户表唯一 |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 400、403、422、500 {"message" : <"message">}
- POST
server_url/V1/register
- 注册动作
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
name |
Y | String | N | <16 | 用户表唯一 |
account |
Y | String | N | <255 | 用户表唯一 |
verify_code |
Y | Int | N | 6 | |
password |
Y | String | N | <255 | |
password_confirmation |
Y | String | N | <255 |
- 返回值
HTTP/1.1 201 OK {"access_token" : <"token">}
HTTP/1.1 400、401、422 {"message" : <"message">}
- POST
server_url/V1/user-check
- 检查用户是否合法(是否存在、是否冻结)
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
account |
Y | String | N | <255 | 必须存在于用户表 |
- 返回值
HTTP/1.1 204 OK {null}
HTTP/1.1 400、403 {"message" : <"message">}
- POST
server_url/V1/login
- 登录
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
account |
Y | String | N | <255 | |
password |
Y | String | N | >6 |
- 返回值
HTTP/1.1 200 OK {"access_token" : <"token">}
HTTP/1.1 400、403、422 {"message" : <"message">}
- POST
server_url/V1/password-code
- 忘记密码时,发送验证码
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
account |
Y | String | N | <255 | 必须存在于用户表 |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 400、403、422、500 {"message" : <"message">}
- POST
server_url/V1/password
- 改密
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
account |
Y | String | N | <255 | 必须存在于用户表 |
verify_code |
Y | Int | N | 6 | |
password |
Y | String | N | <255 | |
password_confirmation |
Y | String | N | <255 |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 400、401、403、422 {"message" : <"message">}
- GET
server_url/V1/me
- 获取我(当前登录者)的信息
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
无 | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"data">}
HTTP/1.1 401 {"message" : <"message">}
- GET
server_url/V1/oauth/github/login
- 第三方Github登录,返回第三方登录的重定向链接
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
无 | N |
- 返回值
HTTP/1.1 200 OK {"redirectUrl" : <"redirectUrl">}
HTTP/1.1 500 {"message" : <"message">}
- GET
server_url/V1/user/{uuid}
- 查看用户信息
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"userInfo">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/me
- 修改我的个人信息
可不填,传递空字符串‘’,不可传递null
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
gender |
N | Enum | Y | <255 | male/female/secrecy |
birthday |
N | Date | Y | 形如2018-06-08 | |
reside_city |
N | String | Y | <16 | 居住地 |
bio |
N | String | Y | <32 | 一句话介绍 |
intro |
N | String | Y | <128 | 个人介绍 |
company |
N | String | Y | <32 | 公司 |
company_type |
N | String | Y | <32 | 行业 |
position |
N | String | Y | <32 | 职位 |
- 返回值
HTTP/1.1 200 OK {"data" : <"userInfo">}
HTTP/1.1 400、500 {"message" : <"message">}
- POST
server_url/V1/my-name
- 修改昵称(不可重复)
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
name |
Y | String | Y | <20 | 用户表唯一 |
- 返回值
HTTP/1.1 200 OK {"data" : <"userName">}
HTTP/1.1 400、403、500 {"message" : <"message">}
- POST
server_url/V1/file/image
- 上传图片,返回全路径链接
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
image |
Y | File | Y | <5000KB | jpg,jpeg,png,gif |
- 返回值
HTTP/1.1 201 OK {"data" : <"imageUrl">}
HTTP/1.1 400、422 {"message" : <"message">}
- POST
server_url/V1/file/avatar
- 上传头像,返回全路径链接
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
avatar |
Y | File | Y | <1000KB | jpg,jpeg,png,gif |
- 返回值
HTTP/1.1 201 OK {"data" : <"imageUrl">}
HTTP/1.1 400、422 {"message" : <"message">}
- GET
server_url/V1/logout
- 登出,token失效
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
无 | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
- POST
server_url/V1/file/video
- 上传视频,返回uuid
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
video |
Y | File | Y | <500M |
- 返回值
HTTP/1.1 201 OK {"data" : <"uuid">}
HTTP/1.1 400、422 {"message" : <"message">}
- GET
server_url/V1/posts
- 获取首页文章列表
- 支持分页
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
type |
N | String | N | 可选hot/all/share/question/dynamite/friend/recruit |
|
page |
N | Int | N | 分页 |
- 返回值
HTTP/1.1 200 OK {"data" : <"posts">}
HTTP/1.1 400 {"message" : <"message">}
- GET
server_url/V1/post/{uuid}
- 获取某篇文章详细信息
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"post">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/post
- 创建文章
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
title |
Y | String | Y | <64 | |
summary |
Y | String | Y | <80 | |
poster |
Y | String | Y | <128 | |
content |
Y | Int | Y | <10000 | |
anonymous |
Y | Boolean | Y | 是否匿名发布 | |
type |
Y | String | Y | 可选share/question/dynamite/friend/recruit |
- 返回值
HTTP/1.1 201 OK {"data" : <"uuid">}
HTTP/1.1 400、422、500 {"message" : <"message">}
- PUT
server_url/V1/post/{uuid}
- 修改某篇文章(不得修改标题)
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
summary |
Y | String | Y | <80 | |
poster |
Y | String | Y | <128 | |
content |
Y | Int | Y | <10000 | |
anonymous |
Y | Boolean | Y | 是否匿名发布 | |
type |
Y | String | Y | 可选share/question/dynamite/friend/recruit |
- 返回值
HTTP/1.1 200 OK {"data" : <"post">}
HTTP/1.1 400、404、500 {"message" : <"message">}
- DELETE
server_url/V1/post/{uuid}
- 删除我的某篇文章
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 204 OK {null}
HTTP/1.1 404、500 {"message" : <"message">}
- GET
server_url/V1/answers/{postUuid}/{type?}
- 获取某个文章(问题)的回答列表
- 支持分页
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
postUuid |
Y | String | Y | ||
type |
N | String | Y | 可选hot/new 默认new |
|
page |
N | Int | Y | 分页 |
- 返回值
HTTP/1.1 200 OK {"data" : <"answers">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/answer/detail/{uuid}
- 获取某个回答的详细信息
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"answer">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/answer
- 写回答
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
post_uuid |
Y | String | Y | <64 | |
title |
Y | String | Y | <64 | |
summary |
Y | String | Y | <80 | |
poster |
Y | String | Y | <128 | |
content |
Y | Int | Y | <10000 | |
anonymous |
Y | Boolean | Y | 是否匿名发布 |
- 返回值
HTTP/1.1 201 OK {"data" : <"uuid">}
HTTP/1.1 400、404、422、500 {"message" : <"message">}
- PUT
server_url/V1/answer/{uuid}
- 修改我的某篇回答
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
summary |
Y | String | Y | <80 | |
poster |
Y | String | Y | <128 | |
content |
Y | Int | Y | <10000 | |
anonymous |
Y | Boolean | Y | 是否匿名发布 |
- 返回值
HTTP/1.1 200 OK {"data" : <"answer">}
HTTP/1.1 400、404、500 {"message" : <"message">}
- DELETE
server_url/V1/answer/{uuid}
- 删除我的某篇回答
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y |
- 返回值
HTTP/1.1 204 OK {null}
HTTP/1.1 404、500 {"message" : <"message">}
- GET
server_url/V1/collection/{type}
- 获取我收藏的文章、回答、视频
- 支持分页操作
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
type |
Y | Enum | Y | 区分收藏的类型post /answer /video |
- 返回值
HTTP/1.1 200 OK {"data" : <"collections">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/collection
- 收藏某篇文章、回答
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
resource_uuid |
Y | String | Y | 文章或回答的uuid |
|
type |
Y | Enum | Y | 区分收藏的类型post /answer /video |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- DELETE
server_url/V1/collection/{type}/{uuid}
- 取消收藏文章、回答(不会返回失败,除非404,前端不需要toast提示)
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
type |
Y | Enum | Y | 区分类型post /answer /video |
|
uuid |
Y | String | Y | 该文章、回答的uuid |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/like/post/{uuid}
- 赞文章,再次请求取消赞
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/dislike/post/{uuid}
- 踩文章,再次请求取消踩
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/status/post/{uuid}
- 查询状态
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
无 | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"data">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/like/answer/{uuid}
- 赞回答,再次请求取消赞
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/dislike/answer/{uuid}
- 踩回答,再次请求取消踩
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/status/answer/{uuid}
- 查询状态
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
无 | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"data">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/like/comment/{id}
- 赞评论,再次请求取消赞(这里url跟着评论的ID,而不是uuid)
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
id |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/dislike/comment/{id}
- 踩评论,再次请求取消踩(这里url跟着评论的ID,而不是uuid)
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
id |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/status/comment/{id}
- 查询状态
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
无 | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"data">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/like/video/{uuid}
- 赞视频,再次请求取消赞
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/dislike/video/{uuid}
- 踩视频,再次请求取消踩
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
uuid |
Y | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/status/video/{uuid}
- 查询状态
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
无 | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"data">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/comment/{type}/{postUuid}/{sort?}
- 获取文章或回答的评论列表
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
type |
Y | Enum | Y | 只能在answer /post 中选取 |
|
postUuid |
Y | String | Y | 资源的uuid | |
sort |
N | String | Y | {sort} 可选new/hot,默认new |
- 返回值
HTTP/1.1 200 OK {"data" : <"comments">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/comment
- 写评论、回复评论
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
resource_uuid |
Y | String | Y | 资源ID | |
parent_id |
Y | Int | Y | 是否有父评论(即是否是回复),没有填0 | |
content |
Y | String | Y | <500 | |
type |
Y | Enum | Y | 只能在answer /post 中选取 |
- 返回值
HTTP/1.1 201 OK {"data" : <"comment">}
HTTP/1.1 400、404、422、500 {"message" : <"message">}
- DELETE
server_url/V1/comment/{id}
- 删除我的某条评论
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
id |
Y | Int | Y | 删除评论传递的是评论ID,评论表没有uuid |
- 返回值
HTTP/1.1 204 Not Content {null}
HTTP/1.1 404、500 {"message" : <"message">}
- GET
server_url/V1/user/comments/{userUuid}
- 获取某个用户曾经的所有评论
- 支持分页
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
userUuid |
Y | String | Y | 可以通过type和resource_uuid找到原始文章 |
- 返回值
HTTP/1.1 200 OK {"data" : <"comments">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/user/posts/{userUuid}
- 获取某个用户的所有文章
- 支持分页
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
userUuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"comments">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/user/answers/{userUuid}
- 获取某个用户的所有回答 支持分页
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
userUuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"answers">}
HTTP/1.1 404 {"message" : <"message">}
- POST
server_url/V1/follow/{userUuid}
- 关注、取关某人
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
userUuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"message" : <"message">}
HTTP/1.1 404、422 {"message" : <"message">}
- GET
server_url/V1/follow/status/{userUuid}
- 查询对某个用户的关注、互粉状态
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
userUuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"data">}
HTTP/1.1 404、422 {"message" : <"message">}
- GET
server_url/V1/follows/list/{userUuid}
- 查询某个用户的关注列表(包括我自己)
- 支持分页
?page=x
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
userUuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"list">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/fans/list/{userUuid}
- 查询某个用户的粉丝列表(包括我自己)
- 支持分页
?page=x
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
userUuid |
Y | String | Y |
- 返回值
HTTP/1.1 200 OK {"data" : <"list">}
HTTP/1.1 404 {"message" : <"message">}
- GET
server_url/V1/track/{type}
- 查看我关注的用户们最新发布的文章、回答、视频
- 支持分页
?page=x
参数 | 必须 | 类型 | 认证 | 长度 | 备注 |
---|---|---|---|---|---|
type |
Y | Enum | Y | 区分类型post /answer /video |
- 返回值
HTTP/1.1 200 OK {"data" : <"list">}
HTTP/1.1 400 {"message" : <"message">}
If you discover a security vulnerability within FMock, please send an e-mail to huaixiu.zhen via [email protected]. All security vulnerabilities will be promptly addressed.
The FMock is open-sourced software licensed under the MIT license.