博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
beego数据输出
阅读量:6503 次
发布时间:2019-06-24

本文共 2952 字,大约阅读时间需要 9 分钟。

概览

693826-20171107161246325-149409180.png

直接输出字符串

通过beego.Controller.Ctx.WriteString()方法可以直接向http response body中输出字符串

beego中的函数定义如下:

// WriteString Write string to response body.// it sends response body.func (ctx *Context) WriteString(content string) {    ctx.ResponseWriter.Write([]byte(content))}

示例:直接在response body中输出Hello World!

package controllersimport (    "github.com/astaxie/beego")type MainController struct {    beego.Controller}func (c *MainController) Get() {    c.Ctx.WriteString("Hello World!")}

打开http跟踪可以看到,在http response body中只有Hello World!,都没有html标签。

693826-20171107161315888-1424839351.png

模板数据输出

静态模板数据输出

通过简单的指定beego.Controller.TplName模板文件,http response body将输出模板文件对应的内容。

示例:

package controllersimport (    "github.com/astaxie/beego")type MainController struct {    beego.Controller}func (c *MainController) Get() {    c.TplName = "hello.tpl"}
    

Hello World!

693826-20171107161329419-281586122.png

动态模板数据输出

在web中大部分的内容是静态的,只有少部分数据是动态的。为了复用模板的代码,需要能够把动态的数据插入到模板中,这需要特出的语法。

beego中模板通过{

{}}包含需要被替换的字段,同时需要把要替换的内容添加到Controller的Data中,这样Controller执行时会自动匹配渲染模板。

示例:

package controllersimport (    "github.com/astaxie/beego")type MainController struct {    beego.Controller}func (c *MainController) Get() {    c.Data["Email"] = "arestrack@163.com"    c.TplName = "hello.tpl"}
    

Hello World!

Contact me:

693826-20171107161341528-641944056.png

json格式数据输出

通过把要输出的数据放到Data["json"]中,然后调用ServeJSON()进行渲染,就可以把数据进行JSON序列化输出。

beego中ServeJSON()函数定义如下:

// ServeJSON sends a json response with encoding charset.func (c *Controller) ServeJSON(encoding ...bool) {    var (        hasIndent   = true        hasEncoding = false    )    if BConfig.RunMode == PROD {        hasIndent = false    }    if len(encoding) > 0 && encoding[0] {        hasEncoding = true    }    c.Ctx.Output.JSON(c.Data["json"], hasIndent, hasEncoding)}

示例:

type JSONStruct struct {    Code int    Msg  string}func (c *MainController) Get() {    mystruct := &JSONStruct{0, "hello"}    c.Data["json"] = mystruct    c.ServeJSON()}

693826-20171107161353731-1118800043.png

xml格式数据输出

通过把要输出的数据放到Data["xml"]中,然后调用ServeXML()进行渲染,就可以把数据进行XML序列化输出。

beego中ServeXML()函数定义如下:

// ServeXML sends xml response.func (c *Controller) ServeXML() {    hasIndent := true    if BConfig.RunMode == PROD {        hasIndent = false    }    c.Ctx.Output.XML(c.Data["xml"], hasIndent)}

示例:

type XMLStruct struct {    Code int    Msg  string}func (c *MainController) Get() {    mystruct := &XMLStruct{0, "hello"}    c.Data["xml"] = mystruct    c.ServeXML()}

693826-20171107161407450-990070529.png

jsonp调用

通过把要输出的数据放到Data["jsonp"]中,然后调用ServeJSONP()进行渲染,会设置content-typeapplication/javascript,然后同时把数据进行JSON序列化,然后根据请求的callback参数设置jsonp输出。

beego中ServeJSONP()函数定义如下:

// ServeJSONP sends a jsonp response.func (c *Controller) ServeJSONP() {    hasIndent := true    if BConfig.RunMode == PROD {        hasIndent = false    }    c.Ctx.Output.JSONP(c.Data["jsonp"], hasIndent)}

示例:

type JSONStruct struct {    Code int    Msg  string}func (c *MainController) Get() {    mystruct := &JSONStruct{0, "hello"}    c.Data["jsonp"] = mystruct    c.ServeJSONP()}

693826-20171107163355653-1729537946.png

转载于:https://www.cnblogs.com/arestrack/p/7799425.html

你可能感兴趣的文章
Oracle字符分隔函数(split)
查看>>
【ISC安全训练营】挑战价格极限第三天!!![北京]
查看>>
全国开设艺术类专业的211、985工程院校汇总
查看>>
mysql数据库开发规范
查看>>
Lintcode--008(编辑距离)
查看>>
判断Laravel Eloquent获取数据结果集是否为空
查看>>
systemtap -oracle
查看>>
虚拟内存_内核空间_用户空间
查看>>
深入理解DOM事件类型系列第二篇——键盘事件
查看>>
C语言中预处理器的相关知识:
查看>>
iOS 2D绘图详解(Quartz 2D)之路径(stroke,fill,clip,subpath,blend)
查看>>
关于使用"/"来 dispatcherServlet 的url-pattern带来的问题
查看>>
hexo 添加标签
查看>>
【Kafka】
查看>>
WPF简单模拟QQ登录背景动画
查看>>
WPF 窗口
查看>>
封装TeeChart控件
查看>>
关于Xcode的项目文件夹
查看>>
UT-Austin大学在Image search and large-scale retrieval方面的一系列papers
查看>>
demo03linearlayoutdemo;
查看>>