正文
我们写代码,有所为,有所不为。就像老子说的:
知其雄,守其雌,为天下溪,为天下溪,常德不离,复归于婴儿
。一定要
回到事物的本原去解决问题
:
之前做 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