Nuxt Webhook Validators
一个简单的 nuxt 模块,可在边缘工作,轻松验证来自不同服务的传入 webhook。
功能特性
- 17 个 Webhook 验证器
- 在边缘工作
- 公开的 服务器实用程序
要求
此模块仅适用于作为服务器 API 路由运行的 Nuxt 服务器 (nuxt build
)。
这意味着您不能将此模块与 nuxt generate
一起使用。
快速设置
- 在您的 Nuxt 项目中添加 nuxt-webhook-validators
npx nuxi@latest module add webhook-validators
- 在您的
nuxt.config.ts
中添加模块
export default defineNuxtConfig({
modules: [
'nuxt-webhook-validators'
],
})
服务器实用程序
验证器助手在您的 server/
目录中自动导入。
Webhook 验证器
所有验证器助手都全局公开,可以在您的服务器 API 路由中使用。
助手返回一个布尔值,指示 webhook 请求是否有效。
配置可以直接从您的 nuxt.config.ts
中的 runtimeConfig
定义
export default defineNuxtConfig({
runtimeConfig: {
webhook: {
<provider>: {
<requiredProps>: '',
}
}
}
})
也可以使用环境变量进行设置
NUXT_WEBHOOK_<PROVIDER>_<REQUIRED_PROPERTY> = ""
转到 playground/.env.example 或 playground/nuxt.config.ts 查看每个提供商所需的所有可用属性的列表。
支持的 webhook 验证器
- Discord
- Dropbox
- GitHub
- GitLab
- Heroku
- Hygraph
- Kick
- Meta
- NuxtHub
- Paddle
- PayPal
- Polar
- Resend
- Shopify
- Stripe
- Svix
- Twitch
您可以通过在 src/runtime/server/lib/validators/ 中创建一个新文件来添加您最喜欢的 webhook 验证器
示例
在服务器 API 路由中验证 GitHub webhook。
~/server/api/webhooks/github.post.ts
export default defineEventHandler(async (event) => {
const isValidWebhook = await isValidGitHubWebhook(event)
if (!isValidWebhook) {
throw createError({ statusCode: 401, message: 'Unauthorized: webhook is not valid' })
}
// Some logic...
return { isValidWebhook }
})
开发
# Install dependencies
npm install
# Generate type stubs
npm run dev:prepare
# Develop with the playground
npm run dev
# Build the playground
npm run dev:build
# Run ESLint
npm run lint
# Run Vitest
npm run test
npm run test:watch
# Run typecheck
npm run test:types
# Release new version
npm run release