Skip to content

Latest commit

 

History

History
63 lines (45 loc) · 2.4 KB

routing_reverse.md

File metadata and controls

63 lines (45 loc) · 2.4 KB

Routing and reverse lookups

As mentioned in the Handlers chapter, Iris provides several handler registration methods, each of which returns a Route instance.

Route naming

Route naming is easy, since we just call the returned *Route with a Name field to define a name:

package main

import (
    "github.com/kataras/iris"
)

func main() {
    app := iris.New()
    // define a function
    h := func(ctx iris.Context) {
        ctx.HTML("<b>Hi</b1>")
    }

    // handler registration and naming
    home := app.Get("/", h)
    home.Name = "home"
    // or
    app.Get("/about", h).Name = "about"
    app.Get("/page/{id}", h).Name = "page"

    app.Run(iris.Addr(":8080"))
}

Route reversing AKA generating URLs from the route name

When we register the handlers for a specific path, we get the ability to create URLs based on the structured data we pass to Iris. In the example above, we've named three routers, one of which even takes parameters. If we're using the default html/template view engine, we can use a simple action to reverse the routes (and generae actual URLs):

Home: {{ urlpath "home" }}
About: {{ urlpath "about" }}
Page 17: {{ urlpath "page" "17" }}

Above code would generate the following output:

Home: http://localhost:8080/ 
About: http://localhost:8080/about
Page 17: http://localhost:8080/page/17

Using route names in code

We can use the following methods/functions to work with named routes (and their parameters):

Examples

Check out the kataras/iris/_examples/view/template_html_4 example for more details.