emberroute
Содержание

Первые шаги

Установка

Для 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.