想象您正在构建前端应用程序,并且需要一种持久数据的方法。您对数据的外观有一个很好的了解(架构)。创建在数据库顶部构建的CRUD REST API不是超级复杂的,但仍然需要大量的设置和管道。这需要时间,这并不有趣。使用http://restdb.io和http://airtable.com之类的服务怎么样?这肯定是一个选择,但是如果您还需要一些自定义的JavaScript代码,该怎么办?
Zod和codehooks-crudlify进行营救!
zod是一个打字稿优先的架构声明和验证库。 Zod是开发人员友好的,非常适合定义用于REST API CRUD后端的数据模式。
Crudlify自动化从任何数据模式(ZOD,YUP,JSON-SCHEMA)创建NOSQL后端,并配有安全的REST API,逻辑中间件等。 Crudlify是codehooks.io开发的开源库。
代码示例
以下代码示例显示了一个简单的CRUD后端应用程序,其中包含user
的单个数据架构。我们在此示例中使用Typescript,但是JavaScript工作也一样。
// index.ts
import { app } from 'codehooks-js' // Standard Codehooks.io lib
import { crudlify } from 'codehooks-crudlify';
import { z } from "zod";
const User = z.object({
username: z.string(),
email: z.string().email(),
status: z.boolean().default(true)
}).required({username: true, email: true});
crudlify(app, {user: User})
export default app.init(); // Bind functions to the serverless cloud
安装和部署
首先为源代码创建项目目录。
mkdir mycrud
cd mycrud
touch index.ts
将源代码从上面的示例复制到index.ts
文件中。
提示:使用
git init
添加源代码控制。
安装依赖软件包,包括ZOD。
npm init es6
npm install codehooks -g
npm install codehooks-js codehooks-crudlify zod
然后安装Codehooks CLI,以便于部署到云。
npm install codehooks -g
您可能需要
sudo
命令以获得足够的访问权限。
为您的CRUD后端应用程序创建一个云项目。 coho init
命令还创建一个示例index.js
示例文件,只需删除此文件。
coho init
rm index.js
最终将应用程序部署到无服务器云。
coho deploy
测试已部署的CRUD应用端点。
我们将卷发用于对CRUD后端REST API的简单测试。
发布新用户
使用coho info --examples
命令查看您的API端点地址并保护API令牌。例如,在此示例中,端点地址为https://mycrud-0sbn.api.codehooks.io
。
curl --location --request POST 'https://mycrud-0sbn.api.codehooks.io/dev/user' \
--header 'x-apikey: a75186df-3880-48ba-a9ed-1e98a6d76d8e' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "Joe",
"email": "joe@example.com"
}'
获取用户
成功列出REST API后,我们可以查询API中的数据。
curl --location --request GET 'https://mycrud-0sbn.api.codehooks.io/dev/user?username=Joe' \
--header 'x-apikey: a75186df-3880-48ba-a9ed-1e98a6d76d8e' \
--header 'Content-Type: application/json'
结果
[
{
"username": "Joe",
"email": "joe@example.com",
"status": true,
"_id": "186caaac119-tiry33nf09dvuj"
}
]
测试ZOD验证数据模式
让我们发布一个带有无效的电子邮件地址的JSON文档,看看会发生什么。
curl --location --request POST 'https://mycrud-0sbn.api.codehooks.io/dev/user' \
--header 'x-apikey: a75186df-3880-48ba-a9ed-1e98a6d76d8e' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "Jane",
"email": "jane.example.com"
}'
ZOD的结果表明它正在按预期工作。
[
{
"validation": "email",
"code": "invalid_string",
"message": "Invalid email",
"path": [
"email"
]
}
]
结论
验证库不仅对验证更有用。它们是模式,因此可以描述一个静止的crud api-“ codehooks -crudlify”向我们展示了。如果您渴望设置此设置但想在本地运行,则可以使用常规的Node.js Express Server和一个带有NPM软件包codehooks-mongodb的MongoDB数据库。
快乐编码!