通过 100+ 条技巧学习 Nuxt!

webhook-validators
nuxt-webhook-validators

Nuxt 模块,可在边缘工作,轻松验证来自不同服务的传入 Webhook。

webhook-validators

Nuxt Webhook Validators

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
  • 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