用zod和codehooks-crudlify易用的CRUD后端开发
#typescript #node #database #nosql

想象您正在构建前端应用程序,并且需要一种持久数据的方法。您对数据的外观有一个很好的了解(架构)。创建在数据库顶部构建的CRUD REST API不是超级复杂的,但仍然需要大量的设置和管道。这需要时间,这并不有趣。使用http://restdb.iohttp://airtable.com之类的服务怎么样?这肯定是一个选择,但是如果您还需要一些自定义的JavaScript代码,该怎么办?

Zodcodehooks-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应用端点。

提示:使用PostmanThunder进行轻松测试。

我们将卷发用于对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数据库。

快乐编码!