[add]docs &

This commit is contained in:
many2many 2024-05-15 04:46:48 +08:00
parent aac247698e
commit e71bbf3eb5
8 changed files with 198 additions and 28 deletions

View File

@ -1,5 +1,3 @@
# RESTFul API 文档 v1.0
## 1. 用户注册 ## 1. 用户注册
### 1.1 接口描述 ### 1.1 接口描述
@ -36,17 +34,17 @@ Content-Type: application/json
### 1.7 返回参数说明 ### 1.7 返回参数说明
| 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 | | 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 |
|-----------| ---- | -------- | -------- | ---------------------------- | |------| ---- | -------- | -- |-----------|
| code | 是 | 整型 | | 错误码,200表示成功 | | code | 是 | 整型 | | 错误码0表示成功 |
| message | 否 | 字符串 | 1-50字符 | 错误信息描述 | | msg | 否 | 字符串 | | 错误信息描述 |
| data | 否 | json | | 具体业务数据 | | data | 否 | json | | 具体业务数据 |
data结构说明 data结构说明
| 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 | | 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 |
|-----------| ---- | -------- | -------- | ---------------------------- | |-----------| ---- | -------- |--------| ---------------------------- |
| id | 是 | 整型 | | 用户id | | id | 是 | 整型 | | 用户id |
| username | 是 | 字符串 | 1-50字符 | 登录账号| | username | 是 | 字符串 | 1-32字符 | 登录账号|
@ -57,7 +55,7 @@ data结构说明
``` ```
### 1.9 响应示例(错误) ### 1.9 响应示例(错误)
```json ```json
{ "code": 10001, "msg": "验证码无效" } { "code": 409, "msg": "用户名存在" }
``` ```
### 1.10 错误响应码参考 ### 1.10 错误响应码参考

View File

@ -1,5 +1,3 @@
# RESTFul API 文档 v1.0
## 1. 用户登录接口 ## 1. 用户登录接口
### 1.1 接口描述 ### 1.1 接口描述
@ -17,9 +15,9 @@
### 1.5 请求体参数 ### 1.5 请求体参数
| 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 | 示例 | 允许空值 | | 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 | 示例 | 允许空值 |
|-----------| ---- | -------- | -------- | ---------------------------- | ------------ | -------- | |-----------| ---- | -------- |--------| ---------------------------- | ------------ | -------- |
| username | 是 | 字符串 | 1-50字符 | 用于登录的账号(手机号或邮箱) | "user123" | 否 | | username | 是 | 字符串 | 1-32字符 | 用于登录的账号(手机号或邮箱) | "user123" | 否 |
| password | 是 | 字符串 | 1-50字符 | 密码 | "p@ssw0rd" | 否 | | password | 是 | 字符串 | 1-32字符 | 密码 | "p@ssw0rd" | 否 |
### 1.6 请求示例 ### 1.6 请求示例
@ -36,9 +34,9 @@ Content-Type: application/json
### 1.7 返回参数说明 ### 1.7 返回参数说明
| 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 | | 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 |
|-----------| ---- | -------- | -------- | ---------------------------- | |------| ---- | -------- | -- |-----------|
| code | 是 | 整型 | | 错误码,200表示成功 | | code | 是 | 整型 | | 错误码0表示成功 |
| message | 否 | 字符串 | 1-50字符 | 错误信息描述 | | msg | 否 | 字符串 | | 错误信息描述 |
| data | 否 | json | | 具体业务数据 | | data | 否 | json | | 具体业务数据 |
@ -55,7 +53,7 @@ data结构说明
``` ```
### 1.9 响应示例(错误) ### 1.9 响应示例(错误)
```json ```json
{ "code": 10001, "msg": "验证失败" } { "code": 401, "msg": "验证失败" }
``` ```
### 1.10 错误响应码参考 ### 1.10 错误响应码参考

View File

@ -0,0 +1,94 @@
## 1. 获取用户个人信息接口
### 1.1 接口描述
获取当前登录用户的个人信息。
### 1.2 请求URL
`/v1/user/info`
### 1.3 请求方式
**GET**
### 1.4 请求头
| 头字段 | 必填 | 数据类型 | 描述 |
| ------------ | ---- | ------------- | -------------------------------- |
### 1.5 请求体参数
| 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 | 示例 | 允许空值 |
|-----------| ---- | -------- | -------- | ---------------------------- | ------------ | -------- |
### 1.6 请求示例
```http
GET /api/user/signup
```
### 1.7 返回参数说明
| 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 |
|------| ---- | -------- | -- |-----------|
| code | 是 | 整型 | | 错误码0表示成功 |
| msg | 否 | 字符串 | | 错误信息描述 |
| data | 否 | json | | 具体业务数据 |
data结构说明
| 参数名称 | 必填 | 数据类型 | 约束条件 | 描述 |
|----------| --- | -------- |--|------|
| id | 是 | 整型 | | 用户id |
| username | 是 | 字符串 | 1-32字符 | 登录账号 |
| ... | | | | |
| follows | 是 | 整型 | | 关注我的 |
| followings | 是 | 整型 | | 我关注的 |
| tweets_count | 是 | 整型 | | |
### 1.8 响应示例(成功)
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 100066,
"nickname": "xyz",
"username": "xyz",
"status": 1,
"avatar": "https://assets.paopao.info/public/avatar/default/jackson.png",
"phone": "",
"is_admin": false,
"created_on": 1714290963,
"follows": 0,
"followings": 0,
"tweets_count": 4
}
}
```
### 1.9 响应示例(错误)
```json
{ "code": 500, "msg": "内部错误" }
```
### 1.10 错误响应码参考
更多响应错误码及含义,请参阅[API响应码表](URL/for/api/responseCode/table)。
### 1.11 安全性与认证
### 1.12 测试环境
访问测试环境以进行接口调试:
[https://test.apiAddress.com](https://test.apiAddress.com)
### 1.13 版本管理
本API通过URI路径进行版本控制。请在请求URL中包含`/v1`以使用当前版本。
### 1.14 更新记录
- **2024-05-07**添加data结构说明
- **2024-04-29**:发布文档初始版本。
### 1.15 联系支持
如需帮助或对API有任何疑问请通过电子邮件与我们联系[support@api.com](mailto:support@api.com)。
### 1.16 反馈与建议
发现文档问题或有改进建议?请填写[反馈表单](https://forms.api.com/feedback)与我们分享。

View File

@ -0,0 +1,32 @@
### 单一`master`分支的Git工作流:
1. **仓库初始化**
- 在GitHub、GitLab或其他代码托管平台上创建一个新的仓库。
- 在本地机器上,使用`git clone`命令克隆远程仓库到本地。
2. **工作开始**
- 进入项目目录,使用`cd`命令。
- 确保始终处于`master`分支,可通过`git branch`查看当前分支,或使用`git checkout master`切换到`master`分支。
3. **日常开发**
- 在`master`分支上直接进行文件的修改、新增或删除。
- 使用`git status`查看工作区的状态,了解哪些文件已被修改或新增。
- 使用`git add .`或`git add <file>`将改动的文件添加到暂存区。
- 使用`git commit -m "commit message"`提交改动到本地仓库,记得附上清晰的提交信息。
4. **推送到远程仓库**
- 使用`git push origin master`将本地`master`分支的改动推送到远程仓库的`master`分支。
- 如果是首次推送,可能需要添加`-u`参数来建立跟踪关系,如`git push -u origin master`。
5. **协作与冲突解决**
- 在多人协作时,确保及时拉取远程的最新改动到本地,使用`git pull origin master`。
- 如果出现冲突Git会提示冲突文件需要手动编辑这些文件解决冲突保留或合并必要的改动。
- 解决冲突后,再次使用`git add`和`git commit`提交解决冲突后的版本,并推送。
6. **代码审查与反馈**
- 即使在简化的工作流中也应该鼓励团队成员相互查看提交的代码可以通过Pull Request即使是在同一个分支内或代码审查工具来进行。
7. **版本标记**
- 对于重要的里程碑或发布版本,可以使用`git tag`命令打标签,例如`git tag v1.0.0`,然后使用`git push origin --tags`将标签推送到远程仓库。
尽管此流程简单,但重要的是要意识到,随着项目复杂度和团队规模的增长,这种单一`master`分支的模式很容易导致混乱和错误。推荐过渡到更成熟的工作流,比如引入`develop`分支作为日常开发分支,以及使用功能分支进行特性开发和隔离,最终通过 Pull Request 合并到主分支,以保持代码质量和团队协作效率。

View File

@ -148,6 +148,47 @@ springdoc:
</configuration> </configuration>
``` ```
- **JSON配置项**
在`application.yml`中添加配置,设置JSON的属性命名策略为SNAKE_CASE
```yaml
spring:
jackson:
property-naming-strategy: SNAKE_CASE # 驼峰转下划线
```
在Spring Boot应用中可以通过`spring.jackson`命名空间下的配置项来定制Jackson库的行为以适应不同的JSON序列化和反序列化需求。以下是一些关键的配置项示例及其功能
> **默认属性包含策略**:
- `spring.jackson.default-property-inclusion`: 控制哪些属性会被序列化到JSON中可选值包括`ALWAYS`, `NON_NULL`, `NON_EMPTY`, `USE_DEFAULTS`, `NON_ABSENT`, 和 `CUSTOM`。例如,设置为`NON_NULL`可避免null值的字段出现在JSON输出中。
> **日期格式化**:
- `spring.jackson.date-format`: 允许配置日期格式字符串,或者指定一个日期格式化类的全限定名,如使用`java.text.SimpleDateFormat`的格式。
- `spring.jackson.time-zone`: 设置日期时间序列化和反序列化时使用的时区。
> **缩进和美化输出**:
- `spring.jackson.serialization.indent-output`: 布尔值决定是否在输出的JSON中加入缩进以美化格式默认为`false`。
> **时间戳格式**:
- `spring.jackson.serialization.write-dates-as-timestamps`: 决定日期是否应该被序列化为时间戳(毫秒数)而不是字符串格式,默认为`true`。
> **未知属性处理**:
- `spring.jackson.deserialization.fail-on-unknown-properties`: 当JSON中包含Java对象模型中不存在的属性时决定是否抛出异常默认为`false`意味着忽略未知属性。
> **属性命名策略**:
- `spring.jackson.property-naming-strategy`: 可以设置属性命名策略,如`LOWER_CAMEL_CASE`, `UPPER_CAMEL_CASE`, `KEBAB_CASE`, `SNAKE_CASE`, 或自定义实现的全限定名。
> **特性包含与忽略**:
- 可以通过特定的配置来控制Jackson的特性比如`spring.jackson.features.*`,这里`*`代表Jackson中的特性标识例如`FAIL_ON_UNKNOWN_PROPERTIES`等。
> **自定义ObjectMapper**:
- 如果上述配置不能满足需求,可以通过定义一个`ObjectMapper` Bean来实现更复杂的自定义配置。
请注意实际可用的配置项可能依据Spring Boot的版本不同而有所差异建议查阅对应版本的官方文档以获取最新和最准确的配置信息。
#### 6、配置h2数据库和JPA #### 6、配置h2数据库和JPA
项目使用h2数据库作为默认的数据库并使用JPA作为ORM框架。 项目使用h2数据库作为默认的数据库并使用JPA作为ORM框架。

View File

@ -27,10 +27,11 @@ public class UserDto implements Serializable {
String phone; String phone;
Byte status; Byte status;
String avatar; String avatar;
Long balance;
Boolean isAdmin; Boolean isAdmin;
Integer follows=0;
Integer followings=0;
Integer tweetsCount=0;
} }
``` ```
> @Value 是 Lombok 库提供的一个注解,用于简化 Java 类的编写。当这个注解应用在一个类上时Lombok 会自动为类的所有字段生成以下内容: > @Value 是 Lombok 库提供的一个注解,用于简化 Java 类的编写。当这个注解应用在一个类上时Lombok 会自动为类的所有字段生成以下内容:
- 私有字段Private fields所有字段默认变为私有并且没有公共访问器getter 和 setter - 私有字段Private fields所有字段默认变为私有并且没有公共访问器getter 和 setter

View File

@ -16,6 +16,8 @@ public class UserDto implements Serializable {
String phone; String phone;
Byte status; Byte status;
String avatar; String avatar;
Long balance;
Boolean isAdmin; Boolean isAdmin;
Integer follows=0;
Integer followings=0;
Integer tweetsCount=0;
} }

View File

@ -3,6 +3,10 @@ springdoc:
path: /api-docs path: /api-docs
spring: spring:
jackson:
property-naming-strategy: SNAKE_CASE # 驼峰转下划线
datasource: datasource:
url: jdbc:h2:file:./paopao.h2 # 使用文件存储 url: jdbc:h2:file:./paopao.h2 # 使用文件存储
driverClassName: org.h2.Driver driverClassName: org.h2.Driver
@ -45,4 +49,4 @@ app:
- path: "/v1/auth/**" - path: "/v1/auth/**"
methods: [ "GET","PUT","POST"] methods: [ "GET","PUT","POST"]
allowed-origins: allowed-origins:
- "http://localhost:8080" - "http://localhost:5173"