跳到主内容

Vercel 示例

Github StackBlitz

本示例演示了如何将 Go Fiber 应用部署到 Vercel。

描述

本项目提供了将 Go Fiber 应用部署到 Vercel 的起点。它包含了必要的配置文件和代码,以便在 Vercel 上运行无服务器应用。

要求

项目结构

  • api/index.go:无服务器函数的主要入口点。
  • vercel.json:Vercel 的配置文件。
  • go.mod:Go 模块文件。

设置

  1. 克隆仓库

    git clone https://github.com/gofiber/recipes.git
    cd recipes/vercel
  2. 安装依赖

    go mod download

配置

确保根目录中存在 vercel.json 文件以正确处理路由。此文件会将所有请求重写到 api/index.go 处理器。

{
"rewrites": [
{ "source": "(.*)", "destination": "api/index.go" }
]
}

部署

  1. 安装 Vercel CLI

    npm install -g vercel
  2. 登录 Vercel

    vercel login
  3. 部署应用

    vercel

按照提示完成部署。您的应用将被部署到 Vercel,并提供一个 URL。

示例用法

  1. 打开您的浏览器并导航到提供的 Vercel URL。
  2. 您应该会看到包含 URI 和路径的 JSON 响应。

代码概述

api/index.go

主 Go 文件设置 Fiber 应用,处理 HTTP 请求,并管理路由。

package handler

import (
"github.com/gofiber/fiber/v2/middleware/adaptor"
"github.com/gofiber/fiber/v2"
"net/http"
)

// Handler is the main entry point of the application. Think of it like the main() method
func Handler(w http.ResponseWriter, r *http.Request) {
// This is needed to set the proper request path in `*fiber.Ctx`
r.RequestURI = r.URL.String()

handler().ServeHTTP(w, r)
}

// building the fiber application
func handler() http.HandlerFunc {
app := fiber.New()

app.Get("/v1", func(ctx *fiber.Ctx) error {
return ctx.JSON(fiber.Map{
"version": "v1",
})
})

app.Get("/v2", func(ctx *fiber.Ctx) error {
return ctx.JSON(fiber.Map{
"version": "v2",
})
})

app.Get("/", func(ctx *fiber.Ctx) error {
return ctx.JSON(fiber.Map{
"uri": ctx.Request().URI().String(),
"path": ctx.Path(),
})
})

return adaptor.FiberApp(app)
}

结论

本示例为将 Go Fiber 应用部署到 Vercel 提供了基本设置。它可以进一步扩展和自定义,以适应更复杂应用的需求。

参考资料