Nuxt Nation 大会即将到来。加入我们,时间为 11 月 12 日至 13 日。

webhook-validators
nuxt-webhook-validators

一个在边缘运行的 Nuxt 模块,用于轻松验证来自不同服务的传入 Webhook。

webhook-validators

Nuxt Webhook 验证器

npm version npm downloads License Nuxt Modules

一个简单的 Nuxt 模块,在边缘运行,可以轻松验证来自不同服务的传入 Webhook。

功能

要求

此模块仅适用于作为服务器 API 路由运行的 Nuxt 服务器(nuxt build)。

这意味着您不能将此模块与 nuxt generate 一起使用。

快速设置

  1. 在您的 Nuxt 项目中添加 nuxt-webhook-validators
npx nuxi@latest module add webhook-validators
  1. 在您的 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.exampleplayground/nuxt.config.ts 以查看每个提供程序所需的所有可用属性列表。

支持的 Webhook 验证器

  • Discord
  • Dropbox
  • GitHub
  • Heroku
  • Hygraph
  • Meta
  • NuxtHub
  • Paddle
  • PayPal
  • Polar
  • Stripe
  • 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