• beego——URL构建


    如果可以匹配URl,那么beego也可以生成URL吗?当然可以。

    UrlFor()函数就是用于构建执行函数的URL的。它把对应控制器和函数名结合的字符串作为第一个参数,其余参数对应URL中的变量。未知变量将添加到URL中作为查询参数。

    下面定义了一个相应的控制器

    type TestController struct {
        beego.Controller
    }
    
    func (this *TestController) Get() {
        this.Data["Username"] = "astaxie"
        this.Ctx.Output.Body([]byte("ok"))
    }
    
    func (this *TestController) List() {
        this.Ctx.Output.Body([]byte("i am list"))
    }
    
    func (this *TestController) Params() {
        this.Ctx.Output.Body([]byte(this.Ctx.Input.Params()["0"] + this.Ctx.Input.Params()["1"] + this.Ctx.Input.Params()["2"]))
    }
    
    func (this *TestController) Myext() {
        this.Ctx.Output.Body([]byte(this.Ctx.Input.Param(":ext")))
    }
    
    func (this *TestController) GetUrl() {
        this.Ctx.Output.Body([]byte(this.UrlFor(".Myext")))
    }
    

      

    下面是我们注册的路由:

    beego.Router("/api/list", &TestController{}, "*:List")
    beego.Router("/person/:last/:first", &TestController{})
    beego.AutoRouter(&TestController{})
    

      

    那么通过方式可以获取相应的URL地址:

    beego.URLFor("TestController.List")
    // 输出 /api/list
    
    beego.URLFor("TestController.Get", ":last", "xie", ":first", "asta")
    // 输出 /person/xie/asta
    
    beego.URLFor("TestController.Myext")
    // 输出 /Test/Myext
    
    beego.URLFor("TestController.GetUrl")
    // 输出 /Test/GetUrl
    

      

    模板中如何使用

    默认情况下,beego已经注册了urlfor函数,用户可以通过如下的代码进行调用

    {{urlfor "TestController.List"}}
    

      

    为什么不把URL写死在模板中,反而要动态构建?有两个很好的理由:

    (1)反向解析通常比硬编码URL更直观。同时,更重要的是你可以只在一个地方改变URL,而不用到处找。

    (2)URL创建会为你处理特殊字符的转义和Unicode数据。

  • 相关阅读:
    JS中的钩子(hook)机制与实现
    Java 之 注解的定义
    Java 网络编程案例:使用 MulticastSocket 实现多点广播
    Java 基于 UDP 协议的网络编程
    Java 网络编程案例四:多个客户端群聊
    Java 网络编程案例三:多个客户端上传文件
    Java 网络编程案例二:多台客户端与服务器之间的多次通信
    Java 网络编程案例一:一台客户端与服务器单次通信
    Java 之 网络常用API
    Java 之 网络编程基础知识
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/10122391.html
Copyright © 2020-2023  润新知