张成岗(CZ)的博客世界分享 http://blog.sciencenet.cn/u/zcgweb 脑损伤与脑保护;神经认知;生物信息;蛋白质组;辐射损伤与防护

博文

[转载]Beego脱坑(六)多种格式数据输出

已有 999 次阅读 2021-9-8 12:50 |系统分类:科研笔记|文章来源:转载

Beego脱坑(六)多种格式数据输出


https://blog.csdn.net/yang731227/article/details/82287084


Clown95 2018-09-01 15:21:29   3450   收藏 6

分类专栏: # beego go 版权


beego 同时被 2 个专栏收录 19 篇文章12 订阅 订阅专栏


go 70 篇文章8 订阅 订阅专栏 


title: Beego脱坑(六)多种格式数据输出


tags: go,beego


author : Clown95


在上篇文章中我们了解如何从浏览器获取到数据,这篇文章我们来简单了解下怎么把数据输出到浏览器上。


直接输出

我们先说下直接输出,这个我们在之前的文章中也一直用到,它就是WriteString()方法,通过它我们可以直接向http response body中输出字符串。


例如:


this.Ctx.WriteString("hello world")

模板输出

模板分为静态模板和动态模板,因此输出也理当有这两种方式。


静态模板输出

静态模板输出,就是通过TplName指定简单的模板文件,将html或者tpl文件直接输出到浏览器。

我们简单演示一下:


模板View:


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

    <h1>Hello World!</h1>

</body>

</html>

 

模板控制器:


package controllers

import "github.com/astaxie/beego"

 

type HWControllers struct {

    beego.Controller

}

 

func (this *HWControllers) Get() {

    this.TplName ="hello.html"

}

 

注册路由:


 beego.Router("/hello",&controllers.HWControllers{})

 

运行结果:




 


动态模板输出

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


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


我们还是来演示一下:


模板View:


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

    <h1>你猜我会输出什么:{{.HW}}</h1>

</body>

</html>

 

控制器:


package controllers

 

import "github.com/astaxie/beego"

 

type HWControllers struct {

    beego.Controller

}

 

func (this *HWControllers) Get() {

    this.Data["HW"] ="Hello  World"

    this.TplName ="hello.html"

}

 

注册路由:


 beego.Router("/hello",&controllers.HWControllers{})

相比较静态模板输出,我更改了H1标签 ,添加了{{.HW}},并且使用

this.Data["HW"] ="Hello World" 为 HW赋值,现在来看看输出结果:


 


接口输出

beego 当初设计的时候就考虑了 API 功能的设计,而我们在设计 API 的时候经常是输出 JSON 或者 XML 数据,那么 beego 提供了这样的方式直接输出。


我们先定义User一个结构体,方面下面的代码使用。


type User struct {

    Name string  //首字母一定要大写

    Age  int

    Sex  string 

}

 

注意:如果是想要把结构体作为输出对象,属性名一定要大写。因为只能解析到Public的属性。


json输出和xml输出,两者使用方式大同小异,我们直接看demo演示。


json格式数据输出

func (this *ApiController) JsonFunc(){

    user:= &User{"yj",20,"m"}

    this.Data["json"] =user  

    this.ServeJSON()

}

 

调用 ServeJSON 之后,会设置 content-type 为 application/json,然后同时把数据进行 JSON 序列化输出。


输出结果:



 


XML格式数据输出

func (this *ApiController) XmlFunc(){

 

    user:= &User{"yj",20,"m"}

    this.Data["xml"] =user

    this.ServeXML()

}

 

调用 ServeXML 之后,会设置 content-type 为 application/xml,同时数据会进行 XML 序列化输出。


输出结果:


 


————————————————

版权声明:本文为CSDN博主「Clown95」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yang731227/article/details/82287084 




https://blog.sciencenet.cn/blog-40692-1303351.html

上一篇:[转载]beego搭建个人博客(一)
下一篇:[转载]Go语言之高级篇beego框架之请求数据处理
收藏 IP: 124.207.31.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-9-27 15:18

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部