emberroute
Быстрый HTTP-роутер для Go.
emberroute сопоставляет HTTP-запросы с обработчиками на Go. Поддерживаются параметры пути, подстановки, группы маршрутов и middleware, а поиск идёт по radix-дереву, поэтому остаётся быстрым при любом числе маршрутов.
go get github.com/emberroute-dev/emberroute@latest
Пример
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)
}
Возможности
- Группы маршрутов. Общий префикс и middleware для связанных маршрутов.
- Стандартные типы. Обработчики — обычные функции, никакого своего контекста.
- 405 и OPTIONS. Корректные ответы
Method Not Allowedи автоматический заголовокAllow. - Поиск конфликтов. Неоднозначные маршруты обнаруживаются при запуске, а не во время запроса.
- Параметры пути. Захватывайте сегменты вроде
/users/{id}и читайте их в обработчике.
Документация
УстановкаТребования, установка и сборка из исходников.
Первые шагиПервая программа и основные понятия.
РецептыЗаконченные программы для типичных задач.
ПараметрыВсе параметры, их типы и значения по умолчанию.
СправочникСигнатуры и поведение публичного API.
ПроизводительностьБенчмарки и советы по скорости.
ТестированиеКак тестировать код, использующий библиотеку.
Частые вопросыКороткие ответы на частые вопросы.
Обновление версийКак переходить между мажорными версиями.
РелизыИстория релизов.
Политика безопасностиПоддерживаемые версии и сообщения об уязвимостях.
Участие в разработкеКак собрать проект и отправить изменения.
ПоддержкаГде задать вопрос и как связаться с авторами.