Skip to content

Commit

Permalink
merge: 修正readme文档 (#48)
Browse files Browse the repository at this point in the history
  • Loading branch information
stick-i authored Nov 8, 2024
2 parents 5cd4c8a + 7833ca4 commit 6e24a6f
Showing 1 changed file with 6 additions and 139 deletions.
145 changes: 6 additions & 139 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@
[![Maven Central](https://img.shields.io/maven-central/v/cn.sticki/spel-validator-root.svg)](https://central.sonatype.com/search?q=g:cn.sticki%20a:spel-validator-root)
[![license](https://img.shields.io/github/license/stick-i/spel-validator)](https://github.com/stick-i/spel-validator/blob/main/LICENSE)

一个强大的 Java 参数校验包,基于 SpEL 实现,扩展自 javax.validation 包,用于简化参数校验,几乎支持所有场景下的参数校验。
一个强大的 Java 参数校验包,基于 SpEL 实现,扩展自 jakarta.validation-api 包,用于简化参数校验,几乎支持所有场景下的参数校验。

## 项目地址

- GitHub:https://github.com/stick-i/spel-validator
- Gitee:https://gitee.com/sticki/spel-validator
- 在线文档https://spel-validator.sticki.cn/
- 项目文档https://spel-validator.sticki.cn/

## 特点

- 简单易用,使用方式几乎与 javax.validation 一致,学习成本低,上手快。
- 简单易用,使用方式几乎与 jakarta.validation-api 一致,学习成本低,上手快。
- 强大的参数校验功能,几乎支持所有场景下的参数校验。
- 扩展自 javax.validation 包,只新增不修改,无缝集成到项目中。
- 扩展自 jakarta.validation-api 包,只新增不修改,无缝集成到项目中。
- 基于 SpEL(Spring Expression Language) 表达式,支持复杂的校验逻辑。
- 支持调用 Spring Bean,可在表达式中使用注入过的 Spring Bean。
- 校验时基于整个对象,支持对象内字段间的校验逻辑。
- 支持自定义校验注解,可根据业务需求自定义校验逻辑。
- 无需额外的异常处理,校验失败时会上报到 javax.validation 的异常体系中。
- 无需额外的异常处理,校验失败时会上报到 jakarta.validation-api 的异常体系中。

## 支持的环境

Expand Down Expand Up @@ -70,140 +70,7 @@ JDK8+

## 📦 快速开始

- 添加依赖

Latest Version:
[![Maven Central](https://img.shields.io/maven-central/v/cn.sticki/spel-validator-root.svg)](https://central.sonatype.com/search?q=g:cn.sticki%20a:spel-validator-root)
```xml
<dependency>
<groupId>cn.sticki</groupId>
<artifactId>spel-validator</artifactId>
<version>Latest Version</version>
</dependency>
```

- 在接口参数上使用 `@Valid``@Validated` 注解

```java
@RestController
@RequestMapping("/example")
public class ExampleController {

/**
* 简单校验示例
*/
@PostMapping("/simple")
public Resp<Void> simple(@RequestBody @Valid SimpleExampleParamVo simpleExampleParamVo) {
return Resp.ok(null);
}

}
```

- 在实体类上使用 `@SpelValid` 注解,同时在需要校验的字段上使用 `@SpelNotNull` 等约束注解

```java
@Data
@SpelValid // 添加启动注解
public class SimpleExampleParamVo {

@NotNull
private Boolean switchAudio;

/**
* 此处开启了注解校验
* 当 switchAudio 字段为 true 时,校验 audioContent,audioContent 不能为null
*/
@SpelNotNull(condition = "#this.switchAudio == true", message = "语音内容不能为空")
private Object audioContent;

}
```

- 添加全局异常处理器,处理校验异常

```java
@RestControllerAdvice
public class ControllerExceptionAdvice {

@ExceptionHandler({BindException.class, MethodArgumentNotValidException.class})
public Resp<Void> handleBindException(BindException ex) {
String msg = ex.getFieldErrors().stream()
.map(error -> error.getField() + " " + error.getDefaultMessage())
.reduce((s1, s2) -> s1 + "," + s2)
.orElse("");
return new Resp<>(400, msg);
}

}
```

- 发起请求,即可看到校验结果
<details>
<summary>示例一:@SpelNotNull 校验不通过</summary>

- 请求体:

```json
{
"switchAudio": true,
"audioContent": null
}
```

- 响应体
```json
{
"code": 400,
"message": "audioContent 语音内容不能为空",
"data": null
}
```

</details>

<details>
<summary>示例二:校验通过</summary>

- 请求体
```json
{
"switchAudio": false,
"audioContent": null
}
```

- 响应体
```json
{
"code": 200,
"message": "成功",
"data": null
}
```

</details>

<details>
<summary>示例三:@NotNull 校验不通过</summary>

- 请求体
```json
{
"switchAudio": null,
"audioContent": null
}
```

- 响应体
```json
{
"code": 400,
"message": "switchAudio 不能为null",
"data": null
}
```
</details>
在线文档:https://spel-validator.sticki.cn/guide/getting-started.html

## 📦 示例项目

Expand Down

0 comments on commit 6e24a6f

Please sign in to comment.