专栏名称: 程序人生
十年漫漫程序人生,打过各种杂,也做过让我骄傲的软件;管理过数十人的团队,还带领一班兄弟姐妹创过业,目前在硅谷一家创业公司担任 VP。关注程序人生,了解程序猿,学做程序猿,做好程序猿,让我们的程序人生精彩满满。
目录
相关文章推荐
51好读  ›  专栏  ›  程序人生

构建下一代 HTTP API - 零成本抽象做输入输出的校验和正规化

程序人生  · 公众号  · 程序员  · 2020-12-17 18:05

正文

请到「今天看啥」查看全文


我们写代码,有所为,有所不为。就像老子说的: 知其雄,守其雌,为天下溪,为天下溪,常德不离,复归于婴儿 。一定要 回到事物的本原去解决问题

之前做 UAPI(见: 再谈 API 的撰写 - 架构 )时,我通过把 joi 库(nodejs 的一个 data validator 库)融进了 route API,使得开发者可以在定义路由的时候就定义好 schema,运行时,用户传入的参数就会被校验和正规化,构筑起一道严密的防线:

美中不足的是,这个方案虽然很大程度上解放了开发者手写代码去对请求的各个部分做数据校验,但他们依旧需要声明数据校验是如何进行的,因而只是自动化了 50%。

在 Quenya 中,一切都以 OpenAPI spec 为核心,所以我们可以直接使用 spec 里定义好的 schema 进行自动化处理。我们以 Quenya 代码中所带的例子 todo API 中的 createTodo 为例,其 requestBody 是这么定义的:

requestBody:    description: todo item to be posted    required: true    content:      application/json:        schema:          type: object          properties:            title:              type: string              minLength: 3              maxLength: 64            body:              type: string              minLength: 3              maxLength






请到「今天看啥」查看全文