New creates an instance of Echo.
()
| 369 | |
| 370 | // New creates an instance of Echo. |
| 371 | func New() *Echo { |
| 372 | dir, _ := os.Getwd() |
| 373 | logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) |
| 374 | e := &Echo{ |
| 375 | Logger: logger, |
| 376 | Filesystem: NewDefaultFS(dir), |
| 377 | Binder: &DefaultBinder{}, |
| 378 | JSONSerializer: &DefaultJSONSerializer{}, |
| 379 | formParseMaxMemory: defaultMemory, |
| 380 | } |
| 381 | |
| 382 | e.serveHTTPFunc = e.serveHTTP |
| 383 | e.router = NewRouter(RouterConfig{}) |
| 384 | e.HTTPErrorHandler = DefaultHTTPErrorHandler(false) |
| 385 | e.contextPool.New = func() any { |
| 386 | return newContext(nil, nil, e) |
| 387 | } |
| 388 | e.buildRouterChains() |
| 389 | return e |
| 390 | } |
| 391 | |
| 392 | // buildRouterChains compiles the global and pre-middleware chains once so that ServeHTTP does not have to |
| 393 | // re-wrap middleware closures on every request. It must be called whenever e.middleware or e.premiddleware |