从头开始创建一个自动产生文档/类型安全的现代API(2) 安装Zod OpenAPI Hono/stoker - Bearalise

搭建API路径并运行

在项目目录下创建文件:app/api/[[...route]]/route.ts:
apidemo1

1
2
3
4
5
6
7
8
9
10
11
12
13
import { Hono } from "hono";
import { handle } from 'hono/vercel';

const app = new Hono().basePath('/api');

app.get("/", (c) => {
return c.text("Hello Hono");
});

const port = 3001;
console.log(`Server running on port ${port}`);

export const GET = handle(app);

运行程序:bun run dev
访问localhost,返回 “Hello Hono”,同时控制台显示:

1
Server running on port 3001

安装Zod OpenAPI Hono

Zod OpenAPI Hono是一个支持 OpenAPI 的扩展 Hono 类。通过它,你可以使用 Zod 验证值和类型,并生成 OpenAPI Swagger 文档。
安装:

1
bun add hono zod @hono/zod-openapi

把Hono替换为OpenAPIHono, 代码运行正常:

1
2
3
4
5
6
7
8
9
10
11
12
13
import { OpenAPIHono } from "@hono/zod-openapi";
import { handle } from 'hono/vercel';

const app = new OpenAPIHono().basePath('/api');

app.get("/", (c) => {
return c.text("Hello Hono");
});

const port = 3001;
console.log(`Server running on port ${port}`);

export const GET = handle(app);

安装stoker

stoker是一个工具集,包装了一些API调用的常用功能。执行安装命令:

1
bun add stoker

处理Not Found

可以修改程序如下:

1
2
3
4
5
...
import { notFound } from "stoker/middlewares";
...
app.notFound(notFound);

修改后,访问不存在的地址,返回:
apidemo2

处理On Error

模拟出错的情况,添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
...
import { notFound, onError } from "stoker/middlewares";
...
//访问/error时,抛出错误
app.get("/error", (c) => {
c.status(422);
throw new Error("This is an error");
});

app.onError(onError);
...

修改后,访问/error,会返回如下信息:
apidemo3

以上的好处是返回统一都为Json格式,方便调用端处理。

作者:Bearalise
出处:从头开始创建一个自动产生文档/类型安全的现代API(2) 安装Zod OpenAPI Hono/stoker - Bearalise
版权:本文版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明,必须在文章中给出原文链接。

请我喝杯咖啡吧~

支付宝
微信