Project Icon

akkurate

Kotlin验证库Akkurate简化复杂业务逻辑

Akkurate是一个基于Kotlin的验证库,提供声明式API用于处理复杂业务逻辑的验证。该库特点包括简洁的DSL、内置约束、易扩展性以及支持上下文和异步操作。Akkurate可与主流框架集成,有助于开发者编写高质量、易维护的验证代码。未来计划支持Kotlin多平台开发和提供内置测试工具。

Akkurate

开始阅读文档

Akkurate 是一个利用 Kotlin 表达能力的验证库。无需 30 多个注解或复杂的自定义约束;使用优雅的声明式 API 用 Kotlin 编写验证代码。

该库从零开始设计,旨在处理复杂的业务逻辑,其作用是帮助您编写高质量且易于维护的验证代码。

一个在社交网络上展示该库的 Akkurate 代码示例。

[!警告] Akkurate 正在开发中,尽管经过大量测试,但其 API 尚未稳定;次要版本可能会发生重大变更。 然而,我们将始终提供迁移指南。

请在 GitHub 仓库 中报告任何问题或错误。

示例

以下是一个展示如何约束一本书及其作者列表的示例。

// 定义你的类

@Validate
data class Book(
    val title: String,
    val releaseDate: LocalDateTime,
    val authors: List<Author>,
)

@Validate
data class Author(val firstName: String, val lastName: String)

// 编写验证规则

val validateBook = Validator<Book> {
    // 首先是属性,然后是约束,最后是消息。
    title.isNotEmpty() otherwise { "缺少标题" }

    releaseDate.isInPast() otherwise { "发布日期必须是过去时间" }

    authors.hasSizeBetween(1..10) otherwise { "作者数量错误" }

    authors.each { // 对每个作者应用约束
        (firstName and lastName) {
            // 对两个属性应用相同的约束
            isNotEmpty() otherwise { "缺少姓名" }
        }
    }
}

// 验证你的数据

when (val result = validateBook(someBook)) {
    is Success -> println("成功:${result.value}")
    is Failure -> {
        val list = result.violations
            .joinToString("\n") { "${it.path}: ${it.message}" }
        println("失败:\n$list")
    }
}

注意每个应用于属性的约束都可以像一个句子一样阅读。这段代码:

title.isNotEmpty() otherwise { "缺少标题" }

可以理解为:

检查'title'是否非空,否则写入"缺少标题"。

特性

  • 优雅的 DSL 和 API
    编写清晰明了的验证代码并保持DRY。需要时可以使用循环和条件;忘掉注解地狱吧。

  • 捆绑了所有基本约束
    只为你的业务逻辑编写自定义约束,其他的都交给我们!

  • 易于扩展且高度可扩展
    无需编写冗长的代码来创建自定义约束,在 Akkurate 中,它们就像带参数的 lambda 一样简单。

  • 上下文相关和异步
    需要时随时查询同步/异步数据源,如数据库或 REST API。一切都可以在验证内部进行。

  • 与你喜欢的工具集成
    在任何流行框架中验证你的数据,我们为你处理集成。

  • 一次编码,到处部署
    利用 Kotlin 多平台的优势;只需编写一次验证代码,即可用于前端和后端。

  • 开箱即用的可测试性
    找出如何测试你的验证代码不应该是你的任务之一。你会找到编写良好测试所需的所有工具。

[!注意] 标有 ⏱ 的功能在路线图上。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号