Fiber 快速上手

未匹配的标注

👋欢迎

Fiber是一个Express启发web框架基于fasthttp最快 go的http引擎。设计为简易,及快速的方式开发,同时考虑零内存分配性能

提示:这些文档适用于Fiber v2,该v2 已于2020年9月15日发布。

安装

首先,下载并安装go。需要1.14或更高。

安装通过go get命令完成:

go get github.com/gofiber/fiber/v2

零分配

提示:从*fiber.ctx返回的一些值是默认情况下不是不可变的

因为Fiber被优化为高性能,所以从fiber.ctx返回的值是默认情况下不是不可变的,在请求中重新使用。作为经验的规则,您必须仅在处理程序中使用上下文值,并且您必须不会保留任何引用。从处理程序返回后,您将从上下文中获取的任何值都将在未来的请求中重新使用,并将在脚下更改。这是一个例子:

func handler(c *fiber.Ctx) error {
     //变量仅在此处理程序中有效
    result := c.Params("foo") 

    // ...
}

如果您需要持续存在处理程序之外的此类值,请使用COPY构建它们的底层缓冲区副本。以下是持久字符串的示例:

func handler(c *fiber.Ctx) error {
     //变量仅在此处理程序中有效
    result := c.Params("foo")

     //制作副本
    buffer := make([]byte, len(result))
    copy(buffer, result)
    resultCopy := string(buffer) 
    //变量现在永远有效

    // ...
}

我们创建了一个自定义ImmutableString函数,可以执行上述操作,并可在gofiber/utils包中使用。

app.Get("/:foo", func(c *fiber.Ctx) error {
     //变量现在是不可变的
    result := utils.ImmutableString(c.Params("foo")) 

    // ...
})

或者,您也可以使用不可变设置。它将使所有值从上下文中返回,允许您在任何地方持续存在。当然,这是以性能的成本。

有关更多信息,请检查#426 #185

Hello, World!

下面的嵌入式基本上是最简单的Fiber应用程序,您可以创建。

package main

import "github.com/gofiber/fiber/v2"

func main() {
  app := fiber.New()

  app.Get("/", func(c *fiber.Ctx) error {
    return c.SendString("Hello, World!")
  })

  app.Listen(":3000")
}
go run server.go

浏览到http:/// localhost:3000,,您应该看到hello,world!在页面上。

基本路由

路由指的是确定应用程序如何响应到特定端点的客户端请求,它是URI(或路径)和特定的HTTP请求方法(GET, PUT, POST 等)。

提示:每个路由都可以具有多个处理程序函数,在路由匹配时执行。

路由定义采用以下结构:

//函数签名
app.Method(path string, ...func(*fiber.Ctx) error)
  • appFiber的实例。
  • Method是一个HTTP请求方法,在大写: Get, Put, Post等。
  • path是服务器上的虚拟路径。
  • func(*fiber.Ctx) error 是包含当路由匹配时执行的Context的回调函数。

基本路由

// Respond with "Hello, World!" on root path, "/"
app.Get("/", func(c *fiber.Ctx) error {
  return c.SendString("Hello, World!")
})

参数路由

// GET http://localhost:8080/hello%20world

app.Get("/:value", func(c *fiber.Ctx) error {
  return c.SendString("value: " + c.Params("value"))
  // => Get request with value: hello world
})

可选参数

// GET http://localhost:3000/john

app.Get("/:name?", func(c *fiber.Ctx) error {
  if c.Params("name") != "" {
    return c.SendString("Hello " + c.Params("name"))
    // => Hello john
  }
  return c.SendString("Where is john?")
})

通配符

// GET http://localhost:3000/api/user/john

app.Get("/api/*", func(c *fiber.Ctx) error {
  return c.SendString("API path: " + c.Params("*"))
  // => API path: user/john
})

静态文件

要提供静态文件如(imagesCSS,和 JavaScript),请将函数替换为文件或目录。

函数签名:

app.Static(prefix, root string)

使用 ./public 作为目录名:

app := fiber.New()

app.Static("/", "./public") 

app.Listen(":3000")

现在, 您可以加载 ./public 中的文件:

http://localhost:8080/hello.html
http://localhost:8080/js/jquery.js
http://localhost:8080/css/style.css

备注

有关如何在 Go 中使用 Fiber 构建 API 的更多信息,请查看这篇优秀的文章 在 Go 中使用 Fiber 构建 Express 风格的 API

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/gofiber/2.x/fib...

译文地址:https://learnku.com/docs/gofiber/2.x/fib...

上一篇 下一篇
贡献者:4
讨论数量: 0
发起讨论 只看当前版本


暂无话题~