Первые шаги
Установка
Для emberroute нужен Go 1.22+. Добавьте библиотеку в проект:
go get github.com/emberroute-dev/emberroute@latest
Использование
Создайте Router один раз при запуске и используйте его во всём приложении.
package main
import (
"context"
"fmt"
"log"
"github.com/emberroute-dev/emberroute"
)
func main() {
ctx := context.Background()
r, err := emberroute.New(emberroute.Options{
RedirectTrailingSlash: true,
BasePath: "/",
})
if err != nil {
log.Fatal(err)
}
defer r.Close()
if err := r.Get(ctx, "/users/{id}"); err != nil {
log.Fatal(err)
}
items, err := r.Routes(ctx)
if err != nil {
log.Fatal(err)
}
fmt.Println(items)
}
Маршруты
Маршрут — это метод, шаблон и обработчик. Статические сегменты важнее параметров, а параметры важнее подстановок, независимо от порядка регистрации.
Регистрируйте маршруты при запуске. После старта сервера таблица маршрутов только читается.
Параметры
Используйте {id} для одного сегмента и {rest...} для остатка пути. Параметры всегда строки; преобразуйте и проверяйте их в обработчике.
Группы и middleware
У группы общий префикс и стек middleware. Middleware выполняются в порядке добавления, внешний — первым.
Держите middleware маленькими. Если нужен найденный маршрут, берите его из запроса, а не разбирайте путь заново.
Ошибки маршрутизации
Если ни один маршрут не подошёл, вызывается обработчик not found. Если путь совпал, а метод нет, роутер отвечает 405 с заголовком Allow.