🧞♀️
webhook を hono with zodで validateする
Environment
Hono
バージョン 3.1.0
Zod
バージョン 3.21.4
Validation に掲載されているサンプルコードは、HTMLのフォームタグを使ってSubmitされたデータをvalidateするコードになっています。たとえばメールフォームのようなものだと、このサンプルに沿って行うと良いでしょう。
JSON形式でPOSTされてくるwebhookを受け取ってvalidateしたい場合、 validator()
メソッドの第一引数の validationTarget を変更する必要がありました。
Validation Sample for JSON Webhook
// 仮のSchema ここでvalidationルールを設定
const schema = z.object({
event: z.string({}),
payload: z.object({
// ...
}),
});
validator("json", (value:any, c:Context) => {
const parsed = schema.safeParse(value)
if (!parsed.success) {
return c.text('Invalid!', 401)
}
return parsed.data;
}), (c:Context) => {
const body = c.req.valid("json");
// do something
c.json({"result": "ok"}, 200);
});
All of ValidationTypes
json: any;
form: Record<string, string | File>;
query: Record<string, string | string[]>;
queries: Record<string, string[]>;
param: Record<string, string>;
Discussion