Voltar
Rotas e URLs
Definindo rotas
Em apps/<nome>/routes.go:
var URLPatterns = []router.URLPattern{
router.Path("GET", "/", views.HomeView, "home"),
router.Path("POST", "/contato/", views.ContatoView, "contato"),
router.Path("GET", "/posts/<slug:str>/", views.PostView, "post_detalhe"),
router.Path("GET", "/users/<id:int>/", views.UserView, "user_detalhe"),
router.Path("DELETE", "/users/<id:int>/", views.DeleteUser, "user_delete"),
}
Parâmetros de path — tipos suportados
| Sintaxe | Exemplo de URL | Descrição |
|---|---|---|
<nome:str> |
/posts/meu-post/ |
Qualquer texto sem barra |
<nome:string> |
/posts/meu-post/ |
Idêntico a str |
<id:int> |
/users/42/ |
Número inteiro |
<preco:float> |
/produto/9.99/ |
Número decimal |
<slug:slug> |
/artigos/go-lang/ |
Texto sem barra |
<uid:uuid> |
/item/550e8400.../ |
UUID |
<resto:path> |
/arquivos/a/b/c |
Múltiplos segmentos (com barras) |
Barra final — comportamento
O Kyrux aceita a rota com e sem barra automaticamente:
/contato → serve a view
/contato/ → serve a view (sem redirect)
Não é necessário registrar as duas variantes.
Query string
Parâmetros de query (?chave=valor) funcionam em qualquer rota:
/busca?q=golang&page=2
/busca/?q=golang&page=2 ← ambas funcionam
Acesso na view via ctx.Query() (ver seção 6).
Resolução de URLs nos templates
<a href="{{ url "home" }}">Início</a>
<a href="{{ url "post_detalhe" }}">Post</a>
<form action="{{ url "contato" }}">...</form>
Registrar rotas avançadas (sem o CLI)
func Register(r *router.Router) {
router.Include(r, URLPatterns)
// Rota direta sem URLPattern:
r.Handle("GET /ping", func(ctx *router.Context) {
ctx.JSON(200, map[string]string{"status": "ok"})
})
}