mcpField
B
blink-backend

blink-backend

github.com/blink-new开发441 次安装2 周前更新
代码仓库

关于 blink-backend

blink-backend 是用于构建和部署 Blink 后端端点的技能,涵盖 Hono 应用结构、密钥、JWT 验证、前端调用和部署检查,适用于 Webhook、回调等服务端任务。

主要功能

  1. 01Hono 后端结构指南
  2. 02后端资格检查
  3. 03密钥处理指南
  4. 04JWT 令牌验证
  5. 05前端调用端点示例
  6. 06部署与错误排查

适用场景

  1. 01实现 Webhook 端点
  2. 02处理第三方回调
  3. 03避免服务器密钥暴露于前端代码
  4. 04部署 Blink 后端

MCP 相关

该技能列出用于检查后端状态、部署后端和查看日志的 MCP 工具:`blink_backend_status`、`blink_backend_deploy` 和 `blink_backend_logs`。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/blink-new/blink-plugin --skill blink-backend

安装后在 Claude Code 中输入/blink-backend确认已加载。

详细介绍

MCP 工具

blink_backend_status · blink_backend_deploy · blink_backend_logs

适用场景

  • 优先使用 SDK 处理身份验证、数据库、存储和 AI(约 95% 的情况)
  • 以下场景使用后端:Webhook、服务端密钥、第三方回调、重型处理
  • 切勿仅为 CRUD 创建后端 — 改用 blink.db

开始使用

# Check backend eligibility (Pro/Max/Team)
blink backend status

# Create the entry point
mkdir -p backend
# Write backend/index.ts (see below)

# Deploy
blink backend deploy

# View logs
blink backend logs

结构

backend/
├── index.ts          ← REQUIRED: export default Hono app
├── routes/
│   ├── stripe.ts
│   └── webhooks.ts
└── lib/
    └── auth.ts

backend/index.ts(必需的入口点)

import { Hono } from "hono"
import { cors } from "hono/cors"
import { createClient } from "@blinkdotnew/sdk"

const app = new Hono()
app.use("*", cors())

const getBlink = (env: Record<string, string>) =>
  createClient({
    projectId: env.BLINK_PROJECT_ID,
    secretKey: env.BLINK_SECRET_KEY,  // server key, not publishableKey
  })

app.get("/health", (c) => c.json({ ok: true }))

app.post("/api/example", async (c) => {
  const blink = getBlink(c.env as Record<string, string>)
  const body = await c.req.json()
  return c.json({ success: true })
})

export default app

密钥

自动注入(切勿硬编码):BLINK_PROJECT_ID、BLINK_SECRET_KEY、BLINK_PUBLISHABLE_KEY

用户密钥(第三方密钥):通过项目设置或 CLI 添加,并通过 c.env.MY_SECRET 访问。

JWT 验证

app.post("/api/protected", async (c) => {
  const blink = getBlink(c.env as Record<string, string>)
  const auth = await blink.auth.verifyToken(c.req.header("Authorization"))
  if (!auth.valid) return c.json({ error: auth.error }, 401)
  return c.json({ userId: auth.userId })
})

从前端调用

// Direct fetch
const res = await fetch("https://{projectId8}.backend.blink.new/api/example", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ key: "value" }),
})

// Via SDK
const data = await blink.functions.invoke("api/example", { body: { key: "value" } })

projectId8 = 完整项目 ID 的最后 8 个字符。

部署流程

# 1. Check eligibility
blink backend status

# 2. Write backend/index.ts

# 3. Deploy (reads all backend/ files, bundles with esbuild, deploys to CF Workers)
blink backend deploy

# 4. URL is printed: https://{projectId8}.backend.blink.new

常见错误

错误原因修复
BACKEND_REQUIRES_PRO免费版/Starter 工作区升级到 Pro+
MISSING_ENTRYPOINT没有 backend/index.ts使用 export default app 创建
CORS 错误缺少中间件添加 app.use("*", cors())
blink-apis 返回 401密钥错误使用 secretKey,而非 publishableKey

检查清单

  • backend/index.ts 导出 default app
  • 已添加 app.use("*", cors())
  • 在 createClient 中使用 secretKey(而非 publishableKey)
  • 使用 blink backend deploy 部署
  • 所有外部 fetch() 调用均设置 AbortController 超时

评论

支持 Markdown