type
status
date
slug
summary
tags
category
icon
password
😀
Joi--The most powerful schema description language and data validator for Javascript
Joi是一个流行的数据验证库,专为Node.js环境设计,用于确保JavaScript对象满足特定的模式或结构。它主要通过定义一个称为"schema"的模式来工作,这个模式详细描述了对象的预期结构,包括属性的类型、是否必需、以及可能的值等。

📝 主旨内容

主要特点

  1. 声明式验证规则:Joi允许你以声明式的方式定义验证规则,这使得规则易于编写和理解。
  1. 类型校验:支持多种数据类型的校验,包括字符串、数字、数组、对象等。
  1. 自定义错误消息:可以为每个校验规则自定义错误消息,提高用户体验。
  1. 条件校验:支持基于某些条件进行校验,例如,根据一个字段的值来决定另一个字段是否必需。
  1. 数据转换:在验证过程中自动转换数据类型(例如,将字符串转换为数字)。
  1. 扩展性:可以通过扩展来增加自定义的验证逻辑,使其更加灵活。

主要功能

  • 基本数据类型校验:Joi提供了对基础数据类型(如字符串、数字、布尔值等)的校验功能,可以指定数据的格式、长度、范围等。
  • 复杂结构验证:对于数组和对象,Joi能够验证其内部结构,包括数组的元素类型或对象的属性验证。
  • 正则表达式验证:对于字符串类型的数据,Joi支持使用正则表达式来定义复杂的验证规则。
  • 可选值与默认值:可以为对象的属性指定可选值列表或默认值。
  • 错误处理:验证失败时,Joi提供了详细的错误信息,帮助开发者快速定位和解决问题。

进阶使用

(我还没太理解,不过觉得这种设计精妙绝伦,架构来自伟大的秋山哥)
创建校验rules时,在rule文件中定义schema模型进行校验,内部将joi.object.required封装成obj,obj传递一个schema给req进行校验,怎么校验的呢,声明了一个中间件(~/server/middleware/index.js)用来处理某一种参数校验规则。 最后在router.js中定义接口路由,并指明中间件,中间件可以从rule.js中拿校验规则,也可以从controller层中拿具体的函数,不同的接口进行不同的中间件开发,将中间件绑定到应用程序对象/路由对象的实例,实现灵活的中间件使用。
~/server/rule.js
notion image
~/server/middleware/index.js
notion image
/server/router.js
notion image
 
 

🤗 总结归纳

这几天一直在看后端的一些内容,对于之前长期写前端的人来说,觉得又有意思,有时候又特别无语,需要一个更长时间的投入理解和广泛的尝试。饭要一口一口吃,知识也要一点一点学,不要让自己长时间气馁,也不至于看懂了一点东西就沾沾自喜吧,像周围优秀者看齐。
joi的官方文档难度有点大……
 

📎 参考文章/链接

 
 
 
💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
从MVC架构理解后端设计Node-config
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang