通过 100 多个技巧学习 Nuxt!

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