注册 登录

清河洛

fiber实例的用法

qingheluo2023-10-26清河洛986
fiber 实例是由 fiber 包中的 New()方法创建的,一般称之为 App 实例App 实例拥有多种方法,主要用于设置路由App 实例的方法有: Static :静态文件,如images,CSS,和js Route Handlers:注册绑定路由 Mount :挂载 Fiber 实例 Group :创建群组路由 Server :返回底层 fasthttp Server Stack :返回原始路由器堆栈 Config :返回App Config值 (只读) Handler :返回可...

fiber 实例是由 fiber 包中的 New()方法创建的,一般称之为 App 实例

App 实例拥有多种方法,主要用于设置路由

App 实例的方法有:

Static        :静态文件,如images,CSS,和js
Route Handlers:注册绑定路由
Mount         :挂载 Fiber 实例
Group         :创建群组路由
Server        :返回底层 fasthttp Server
Stack         :返回原始路由器堆栈
Config        :返回App Config值 (只读)
Handler       :返回可用于服务自定义 * fasthttp.RequestCtx 请求的服务器处理程序
Listen        :收听来自给定地址的 HTTP 请求
ListenTLS     :收听来自给定地址的 HTTPS 请求

Static

使用 Static 方法来服务静态文件,例如 images,CSS, 和 JavaScript

默认情况下,Static 将在响应目录上的请求时提供 index.html 文件

func (app *App) Static(prefix, root string, config ...Static) Router

app.Static("/", "./public")
    访问根路由时会提供public目录中的文件
app.Static("/static", "./public")
    访问/static的路由会提供public目录中的文件

Static是一个fiber包下的结构体,用于自定义控制静态文件的设置

fiber.Static{
    //默认False,为true时,服务器尝试通过缓存压缩文件最小化CPU使用率。
     Compress bool `json:"compress"`

    //默认False,为true时,启用字节范围请求。
    ByteRange bool `json:"byte_range"`

    //默认False,为true时,启用目录浏览。
    Browse bool `json:"browse"`

    // 默认False,为true时,启用直接下载
    Download bool `json:"download"`

    //默认“index.html”,用于指定目录的默认服务文件名。
    Index string `json:"index"`

    //非活动文件处理程序的失效持续时间。
    //默认10 * time.second
    //使用否定时间。要禁用它。
      CacheDuration time.Duration `json:"cache_duration"`

    //默认0,缓存控制http-head的值(单位秒)
     MaxAge int `json:"max_age"`

    // 默认nil,定义一个函数来更改响应
     ModifyResponse Handler

    // 默认nil,定义返回true时跳过此中间件的函数
    Next func(c *Ctx) bool
}

  Route Handlers

注册绑定到特定 HTTP method 的路由

// http方法
func (app *App) Get(path string, handlers ...Handler) Router
func (app *App) Head(path string, handlers ...Handler) Router
func (app *App) Post(path string, handlers ...Handler) Router
func (app *App) Put(path string, handlers ...Handler) Router
func (app *App) Delete(path string, handlers ...Handler) Router
func (app *App) Connect(path string, handlers ...Handler) Router
func (app *App) Options(path string, handlers ...Handler) Router
func (app *App) Trace(path string, handlers ...Handler) Router
func (app *App) Patch(path string, handlers ...Handler) Router

//添加所有方法到指定路由
func (app *App) All(path string, handlers ...Handler)

//添加指定方法
func (app *App) Add(method, path string, handlers ...Handler) Router

以上的方法在指定的path路由中,必须完全匹配,如"/api"仅能匹配"/api",不能匹配"/apixx"或"/api/xx"

//简单GET示例
app.Get("/api/list", func(c *fiber.Ctx)error{
  return c.SendString("I'm a GET request!")
})

// 简单POST示例
app.Post("/api/register", func(c *fiber.Ctx) error {
  return c.SendString("I'm a POST request!")
})

根据前缀匹配路由

func (app *App) Use(args ...interface{}) Router

类似于 All(),但 All()是精准匹配,Use 是前缀匹配,只要前缀符合,无论之后有没有字符都会匹配

app.Use(func(c *fiber.Ctx) error {return c.Next()})
    //不指定路由,匹配任何请求

app.Use("/api", func(c *fiber.Ctx) error {return c.Next()})
    //匹配任何以/api开始的请求,如/apixx、/api/xx、/api/a/b等等

app.Use("/api", func1,func2,...funcn)
    //指定多个处理程序,按顺序执行处理程序,遇到c.Next()会向下执行下一个处理程序

Mount

通过创建 *mount 来挂载 Fiber 实例,将加载到的实例作为跟路由

func (a App) Mount(prefix string, app App) Router

micro := fiber.New()
micro.Get("/doe", func(c *fiber.Ctx) error {
    return c.SendStatus(fiber.StatusOK)
})

app := fiber.New()
app.Mount("/john", micro)

// GET /john/doe -> 200 OK

Group

通过创建 *group 结构体来创建群组路由

func (app *App) Group(prefix string, handlers ...Handler) Router

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

  api := app.Group("/api", handler)  // /api

  v1 := api.Group("/v1", handler)   // /api/v1
  v1.Get("/list", handler)          // /api/v1/list

  v2 := api.Group("/v2", handler)   // /api/v2
  v2.Get("/list", handler)          // /api/v2/list
}

Server

服务器返回底层 fasthttp Server

func (app *App) Server() *fasthttp.Server

func main() {
    app := fiber.New()
    app.Server().MaxConnsPerIP = 1
}

Stack

返回原始路由器堆栈

func (app *App) Stack() [][]*Route

var handler = func(c *fiber.Ctx) error { return nil }

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

    app.Get("/john/:age", handler)
    app.Post("/register", handler)

    data, _ := json.MarshalIndent(app.Stack(), "", "  ")
    fmt.Println(string(data))
}

Config

将 App Config 返回为值 (只读)

func (app *App) Config() Config

Handler

返回可用于服务自定义 * fasthttp.RequestCtx 请求的服务器处理程序

func (app *App) Handler() fasthttp.RequestHandler

Listen

收听来自给定地址的 HTTP 请求

func (app *App) Listen(addr string) error

app.Listen(":8080")  // 监听端口 :8080

app.Listen("127.0.0.1:8080")  // 自定义主机

ListenTLS

使用 certfile 和 keyfile 路径从给定地址提供 HTTPS 请求,以作为 TLS 证书和密钥文件

func (app *App) ListenTLS(addr, certFile, keyFile string) error

app.ListenTLS(":443", "./cert.pem", "./cert.key");


网址导航