# 反向查找
就如 [路由](https://github.com/kataras/iris/wiki/Routing) 章节描述的一样, Iris 提供了几种处理程序注册方法,每种方法都返回一个 [路由](https://godoc.org/github.com/kataras/iris/core/router#Route) 实例。
### 路由命名
路由命名很容易,因为我们只需调用 `*Route` 的 `Name`字段的返回来定义名称:
```
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
//定义一个函数
h := func(ctx iris.Context) {
ctx.HTML("<b>Hi</b1>")
}
//处理程序注册和命名
home := app.Get("/", h)
home.Name = "home"
// 或者
app.Get("/about", h).Name = "about"
app.Get("/page/{id}", h).Name = "page"
app.Run(iris.Addr(":8080"))
}
```
# 路由反向 AKA 从路由名称生成URL
当我们为特定路径注册处理程序时,我们可以根据传递给 Iris 的结构化数据创建 URL。在上面的示例中,我们命名了三个路由器,其中一个甚至带有参数。如果我们使用默认的 `html/template` 视图引擎,则可以使用简单的操作来反转路由(并生成实际的 URL ):
```
Home: {{ urlpath "home" }}
About: {{ urlpath "about" }}
Page 17: {{ urlpath "page" "17" }}
```
上面的代码将生成以下输出:
```
Home: http://localhost:8080/
About: http://localhost:8080/about
Page 17: http://localhost:8080/page/17
```
#在代码中使用路由名称
我们可以使用以下方法/函数来处理命名路由(及其参数):
* `GetRoutes` 函数获取所有已注册的路由
* `GetRoute(routeName string)` 方法,用于按名称检索路由
* `URL(routeName string, paramValues ...interface{})` 方法可根据提供的参数生成 url 字符串
* `Path(routeName string, paramValues ...interface{} ` 方法可根据提供的值只生成 URL的路径( 不包含主机和协议 )部分