modified: main_dc/yalarba/api_es/go.mod
modified: main_dc/yalarba/api_es/go.sum modified: main_dc/yalarba/api_es/internal/router/router.go new file: main_dc/yalarba/api_es/internal/router/setMiddleware.go add middlewares, loggers, cors
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
"github.com/go-chi/cors"
|
||||
)
|
||||
|
||||
// setupMiddlewares — устанавливает общие middleware для роутера.
|
||||
func setupMiddlewares(r *chi.Mux) {
|
||||
// Логирование всех запросов
|
||||
r.Use(middleware.Logger)
|
||||
|
||||
// Восстановление после паник
|
||||
r.Use(middleware.Recoverer)
|
||||
|
||||
// Удаление завершающих слешей
|
||||
r.Use(middleware.StripSlashes)
|
||||
|
||||
// Установка реального IP из заголовков (X-Forwarded-For, X-Real-IP)
|
||||
r.Use(middleware.RealIP)
|
||||
|
||||
// Таймаут обработки запроса
|
||||
r.Use(middleware.Timeout(30 * time.Second))
|
||||
|
||||
// Поддержка CORS
|
||||
r.Use(cors.Handler(cors.Options{
|
||||
AllowedOrigins: []string{"https://*", "http://*"},
|
||||
AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"},
|
||||
AllowedHeaders: []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"},
|
||||
ExposedHeaders: []string{"Link"},
|
||||
AllowCredentials: true,
|
||||
MaxAge: 300, // 5 минут
|
||||
}))
|
||||
|
||||
|
||||
// Можно добавить и другие кастомные middleware при необходимости
|
||||
}
|
||||
Reference in New Issue
Block a user