Есть ли функция в fiber, подобная функции set в gin которая записывает пару ключ/значение в определенном контексте?

В библиотеке Fiber для языка программирования Go нет нативной функции, аналогичной функции "set" в Gin, которая записывает пару ключ/значение в определенном контексте. Однако, Fiber предоставляет механизм работы с контекстом через middleware, который позволяет хранить и передавать данные внутри обработчиков запросов.

Middleware - это функция, которая выполняется перед обработкой каждого запроса. Она может получать доступ к контексту запроса и модифицировать его.

Для реализации записи и передачи пары ключ/значение в контексте Fiber вы можете создать и использовать собственный middleware. Пример кода, демонстрирующий это:

package main

import (
	"fmt"

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

func myMiddleware(ctx *fiber.Ctx) error {
	// Записываем пару ключ/значение в контексте
	ctx.Locals("myKey", "myValue")
	return ctx.Next()
}

func myHandler(ctx *fiber.Ctx) error {
	// Получаем значение по ключу из контекста
	value := ctx.Locals("myKey")

	// Выводим значение в консоль
	fmt.Println(value)

	// Возвращаем ответ клиенту
	return ctx.SendString("Hello, Fiber!")
}

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

	// Подключаем наш middleware
	app.Use(myMiddleware)

	// Определяем обработчик запроса
	app.Get("/", myHandler)

	// Запускаем сервер
	app.Listen(":3000")
}

В данном примере мы создали middleware myMiddleware, который записывает пару ключ/значение "myKey"/"myValue" в контексте запроса с помощью метода Locals(). Затем мы определили обработчик запроса myHandler, который получает значение по ключу из контекста и выводит его в консоль.

При обработке каждого запроса через ctx.Next() middleware выполняется перед тем, как передать обработку следующему middleware или обработчику запроса.

Однако, важно отметить, что контекст Fiber является горутинобезопасным и мутировать его внутри middleware может привести к состоянию гонки. Поэтому рекомендуется использовать middleware и контекст Fiber для чтения данных и передачи информации между обработчиками запросов, а для долгосрочного хранения данных рекомендуется использовать базу данных или кэш.