# 接口文档
# 接口规约
起始点:http://host:port/api/v1
起始点 + 类型 + 终结点 得出最终链接,如:http://host:port/api/v1/register/send-mail-verify 为发送邮箱验证码
**注意终结点为 ` ` 和终结点为 `/` 是两个路径** ,例如: http://host:port/api/v1/user 和 http://host:port/api/v1/user/ 分别代表两个不同的东西,不能视为同等请求。
## 数据类型模板
| 字段名 | 数据类型 | 默认值 | 说明 |
| :-------: | :------: | :-----: | :----------: |
| `code` | int | 200 | 响应状态码 |
| `message` | string | success | 响应信息 |
| `data` | object | null | 响应数据 |
| `status` | bool | true | 操作是否成功 |
### `code `含义
| 取值范围 | 含义 |
| :-------: | :------------: |
| [200,299] | 请求成功 |
| [300,399] | 请求转发 |
| [400,499] | 用户级请求失败 |
| 401 | 未登录,请先登录 |
| 402 | 非法操作 |
| [500,599] | 系统级请求失败 |
用户级请求失败:由用户的操作造成,一般是操作被拒绝、跨权限访问或异常操作,比如注册账号时的用户名被占用或者是未经登录就调用修改信息的接口。此类请求一般可以直接将异常信息展示给用户。
系统级请求失败:由服务器异常造成,比如某段代码报错但未经正确处理。此类请求一般不将异常信息直接展示给用户。
## 请求方式说明
一般情况下,各接口的请求方式遵循以下表格:
| 请求方式 | 传参方式 | 含义 |
| :------: | :------: | :----------------: |
| GET | url | 获取资源 |
| POST | fromdata | 新建资源、发出动作 |
| PUT | fromdata | 更新资源 |
| DELETE | fromdata | 删除资源 |
# 注册相关 `/register`
## 发送邮箱验证码 `√`
**注册邮箱验证码有90s发送一次的限制**
终结点:`/send-mail-verify`
请求方式:`POST`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :----: | :------: | :----: | :------: |
| `mail` | string | - | 用户邮箱 |
**响应数据**
无
## 提交注册 `√`
终结点:`/register`
请求方式:`POST`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :----------: | :------: | :----: | :--------: |
| `username` | string | - | 用户名 |
| `password` | string | - | 密码 |
| `mail` | string | - | 邮箱 |
| `mailVerify` | string | - | 邮箱验证码 |
| `mobile` | string | - | 手机号 |
**响应数据**
无
# 登录相关 `/login`
## 用户登录 `√`
终结点:`/login`
请求方式:`POST`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :--------: | :------: | :----: | :----: |
| `username` | string | - | 用户名 |
| `password` | string | - | 密码 |
**响应数据**
| 字段名 | 数据类型 | 说明 |
| :------------: | :------: | :------: |
| `username` | string | 用户名 |
| `nickname` | string | 昵称 |
| `avatarUrl` | string | 头像链接 |
| `registerTime` | datatime | 注册时间 |
## 用户登出 `√`
终结点:`/logout`
请求方式:`GET`
**参数**
无
**响应数据**
无
# 用户信息相关`/user`
==**注意:此类型下所有方法均需要登录后才可以成功调用,除非有特殊说明**==
## 获取公开信息 `√`
**该接口无需登录,可以获取任意用户的信息,如果只需要获取当前用户的信息,请不要传参数**
终结点:` `
请求方式:`GET`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :--------: | :------: | :------------: | :----: |
| `username` | string | 当前登录用户名 | 用户名 |
**响应数据**
| 字段名 | 数据类型 | 说明 |
| :------------: | :------: | :------: |
| `username` | string | 用户名 |
| `nickname` | string | 昵称 |
| `avatarUrl` | datatime | 头像链接 |
| `registerTime` | datatime | 注册时间 |
## 修改昵称 `√`
终结点:`/nickname`
请求方式:`PUT`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :--------: | :------: | :----: | :------: |
| `nickname` | string | - | 用户昵称 |
**响应数据**
无
## 修改头像 `√`
**上传的文件请小于1Mib,支持的格式:png、jpg、jpeg**
终结点:`/avatar`
请求方式:`PUT`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :----------: | :------: | :----: | :------: |
| `avatarFile` | file | - | 用户头像 |
**响应数据**
无
## 修改密码 `√`
终结点:`/password`
请求方式:`PUT`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :-----------: | :------: | :----: | :----: |
| `oldPassword` | string | - | 旧密码 |
| `newPassword` | string | - | 新密码 |
**响应数据**
无
## 修改邮箱 `√`
**修改邮箱前需要先发送邮箱验证码**
终结点:`/mail`
请求方式:`PUT`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :----------: | :------: | :----: | :--------: |
| `mail` | string | - | 新邮箱 |
| `mailVerify` | string | - | 邮箱验证码 |
**响应数据**
无
## 发送邮箱验证码 `√`
**该邮箱验证码有60s内只能发送一次的限制**
终结点:`/mail/send-mail-verify`
请求方式:`POST`
**参数**
无
**响应数据**
无
## 获取基本信息
## 修改基本信息
## 获取教育信息
## 修改教育信息
## 删除用户 `√`
终结点:`/user`
请求方式:`DELETE`
**参数**
| 字段名 | 数据类型 | 默认值 | 说明 |
| :--------: | :------: | :----: |:-----:|
| `password` | string | - | 密码 |
**响应数据**
无
# 关注和粉丝
## 获取关注列表
### 请求信息
#### 请求地址
```
/user/follow?page=98
```
#### 请求方法
```
GET
```
#### 入参字段说明
| **字段** | **类型** | **必填** | **含义** | **其他参考信息** |
| -------- | -------- | -------- | -------- | ---------------- |
| page | **int** | 否 | 当前页 | |
### 出参
#### 出参示例
```json
{
"code": 110,
"message": "响应信息36",
"data": {
"records": [
{
"id": 28,
"userId": 90,
"followId": 4,
"note": "备注21",
"status": 59,
"createTime": {
"nanos": 60
},
"username": "关注者用户名52",
"nickname": "关注者昵称62",
"avatarUrl": "关注者头像链接114",
"registerTime": {}
},
{
"id": 28,
"userId": 90,
"followId": 4,
"note": "备注21",
"status": 59,
"createTime": {
"nanos": 60
},
"username": "关注者用户名52",
"nickname": "关注者昵称62",
"avatarUrl": "关注者头像链接114",
"registerTime": {}
}
],
"total": 920,
"size": 538,
"current": 298
},
"status": true
}
```
#### 出参字段说明
| **字段** | **类型** | **含义** | **其他参考信息** |
| -------------------------------------------------------- |------------------------- | ------------------------------------- | --------------- | | code
| **Integer** | 状态码 | | | message | **String** | 响应信息 | | | data | **
ListVO\<FollowBasic\>** | 响应数据 | | | └─ records | **
List\<FollowBasic\>** | 查询数据列表 | | |     └─ id | **
Integer** | id | | |     └─ userId | **
Integer** | 用户i