mirror of https://github.com/gofiber/fiber.git
125 lines
3.8 KiB
Markdown
125 lines
3.8 KiB
Markdown
---
|
|
id: utils
|
|
title: 🧰 Utils
|
|
sidebar_position: 8
|
|
toc_max_heading_level: 4
|
|
---
|
|
|
|
## Generics
|
|
|
|
### Convert
|
|
|
|
Converts a string value to a specified type, handling errors and optional default values.
|
|
This function simplifies the conversion process by encapsulating error handling and the management of default values, making your code cleaner and more consistent.
|
|
|
|
```go title="Signature"
|
|
func Convert[T any](value string, convertor func(string) (T, error), defaultValue ...T) (*T, error)
|
|
```
|
|
|
|
```go title="Example"
|
|
// GET http://example.com/id/bb70ab33-d455-4a03-8d78-d3c1dacae9ff
|
|
app.Get("/id/:id", func(c fiber.Ctx) error {
|
|
fiber.Convert(c.Params("id"), uuid.Parse) // UUID(bb70ab33-d455-4a03-8d78-d3c1dacae9ff), nil
|
|
|
|
|
|
// GET http://example.com/search?id=65f6f54221fb90e6a6b76db7
|
|
app.Get("/search", func(c fiber.Ctx) error) {
|
|
fiber.Convert(c.Query("id"), mongo.ParseObjectID) // objectid(65f6f54221fb90e6a6b76db7), nil
|
|
fiber.Convert(c.Query("id"), uuid.Parse) // uuid.Nil, error(cannot parse given uuid)
|
|
fiber.Convert(c.Query("id"), uuid.Parse, mongo.NewObjectID) // new object id generated and return nil as error.
|
|
}
|
|
|
|
// ...
|
|
})
|
|
```
|
|
|
|
### GetReqHeader
|
|
|
|
GetReqHeader function utilizing Go's generics feature.
|
|
This function allows for retrieving HTTP request headers with a more specific data type.
|
|
|
|
```go title="Signature"
|
|
func GetReqHeader[V any](c Ctx, key string, defaultValue ...V) V
|
|
```
|
|
|
|
```go title="Example"
|
|
app.Get("/search", func(c fiber.Ctx) error {
|
|
// curl -X GET http://example.com/search -H "X-Request-ID: 12345" -H "X-Request-Name: John"
|
|
fiber.GetReqHeader[int](c, "X-Request-ID") // => returns 12345 as integer.
|
|
fiber.GetReqHeader[string](c, "X-Request-Name") // => returns "John" as string.
|
|
fiber.GetReqHeader[string](c, "unknownParam", "default") // => returns "default" as string.
|
|
// ...
|
|
})
|
|
```
|
|
|
|
### Locals
|
|
|
|
Locals function utilizing Go's generics feature.
|
|
This function allows for manipulating and retrieving local values within a request context with a more specific data type.
|
|
|
|
```go title="Signature"
|
|
func Locals[V any](c Ctx, key any, value ...V) V
|
|
|
|
// get local value
|
|
func Locals[V any](c Ctx, key any) V
|
|
// set local value
|
|
func Locals[V any](c Ctx, key any, value ...V) V
|
|
```
|
|
|
|
```go title="Example"
|
|
app.Use("/user/:user/:id", func(c fiber.Ctx) error {
|
|
// set local values
|
|
fiber.Locals[string](c, "user", "john")
|
|
fiber.Locals[int](c, "id", 25)
|
|
// ...
|
|
|
|
return c.Next()
|
|
})
|
|
|
|
|
|
app.Get("/user/*", func(c fiber.Ctx) error {
|
|
// get local values
|
|
name := fiber.Locals[string](c, "user") // john
|
|
age := fiber.Locals[int](c, "id") // 25
|
|
// ...
|
|
})
|
|
```
|
|
|
|
### Params
|
|
|
|
Params function utilizing Go's generics feature.
|
|
This function allows for retrieving route parameters with a more specific data type.
|
|
|
|
```go title="Signature"
|
|
func Params[V any](c Ctx, key string, defaultValue ...V) V
|
|
```
|
|
|
|
```go title="Example"
|
|
app.Get("/user/:user/:id", func(c fiber.Ctx) error {
|
|
// http://example.com/user/john/25
|
|
fiber.Params[int](c, "id") // => returns 25 as integer.
|
|
fiber.Params[int](c, "unknownParam", 99) // => returns the default 99 as integer.
|
|
// ...
|
|
return c.SendString("Hello, " + fiber.Params[string](c, "user"))
|
|
})
|
|
```
|
|
|
|
### Query
|
|
|
|
Query function utilizing Go's generics feature.
|
|
This function allows for retrieving query parameters with a more specific data type.
|
|
|
|
```go title="Signature"
|
|
func Query[V any](c Ctx, key string, defaultValue ...V) V
|
|
```
|
|
|
|
```go title="Example"
|
|
app.Get("/search", func(c fiber.Ctx) error {
|
|
// http://example.com/search?name=john&age=25
|
|
fiber.Query[string](c, "name") // => returns "john"
|
|
fiber.Query[int](c, "age") // => returns 25 as integer.
|
|
fiber.Query[string](c, "unknownParam", "default") // => returns "default" as string.
|
|
// ...
|
|
})
|
|
```
|