举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > go语言函数 GoFrame 数据返回-JSON/XML

go语言函数 GoFrame 数据返回-JSON/XML

2023-06-16 22:20 GoFrame教程

go语言函数 GoFrame 数据返回-JSON/XML

go语言函数

Go语言函数是Go语言编程中的一个重要概念,它是一种可以在Go语言程序中重复使用的代码块。函数可以接受参数,并返回一个或多个值。函数的定义格式如下:

func function_name( [parameter list] ) [return_types] {
   函数体
}

其中,function_name 是函数名;parameter list 是参数列表,由逗号分隔的形式参数组成;return_types 是函数返回值的类型列表,如果没有返回值则省略此项。Go语言中的函数也有特性,例如多返回值、命名返回值、可变长度参数、闭包、匿名函数、defer 等。

多返回值是 Go 语言特有的特性之一。在 Go 语言中,函数有时会返回多个值。例如 fmt.Println() 函数就会返回一个 int 类型的 n 和 error 类型的 err 两个值。在使用时需要将多个返回值用括号括起来并使用逗号分隔开来。

n, err := fmt.Println("Hello World")

命名返回值是 Go 语言特有的特性之二。在 Go 语言中,我们不仅能够定义函数的形式参数,而且能够定义函数的命名返回值。命名返回和形式参数定义方法相似,都是在函数声明时把形式上要传入或者传出的内容声明好即可。

func add(x int, y int) (sum int) {   // 定义 sum 作为命名返回   sum = x + y   return }

Go 语言中允许使用不定长度的形式参数来声明一个函数。不定长度形式参数必须位于形式参数列表末尾并以 ... 符号标识。不定长度形式参

GoFrame 数据返回-JSON/XML

相关方法:

func (r *Response) WriteJson(content interface{}) error
func (r *Response) WriteJsonExit(content interface{}) error
func (r *Response) WriteJsonP(content interface{}) error
func (r *Response) WriteJsonPExit(content interface{}) error
func (r *Response) WriteXml(content interface{}, rootTag ...string) error
func (r *Response) WriteXmlExit(content interface{}, rootTag ...string) error

Response​提供了对​JSON/XML​数据格式输出的原生支持,通过以下方法实现: 

  1. WriteJson*​ 方法用于返回​JSON​数据格式,参数为任意类型,可以为​string​、​map​、​struct​等等。返回的​Content-Type​为​application/json​。
  2. WriteXml*​ 方法用于返回​XML​数据格式,参数为任意类型,可以为​string​、​map​、​struct​等等。返回的​Content-Type​为​application/xml​。

对​JSON​数据格式支持的同时,同时也支持​JSONP​协议。

JSON

package main

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

func main() {
	s := g.Server()
	s.Group("/", func(group *ghttp.RouterGroup) {
		group.ALL("/json", func(r *ghttp.Request) {
			r.Response.WriteJson(g.Map{
				"id":   1,
				"name": "john",
			})
		})
	})
	s.SetPort(8199)
	s.Run()
}

执行后,我们通过​curl​工具测试下:

$ curl -i http://127.0.0.1:8199/json
HTTP/1.1 200 OK
Content-Type: application/json
Server: GF HTTP Server
Date: Sun, 05 Jan 2020 02:49:31 GMT
Content-Length: 22

{"id":1,"name":"john"}

JSONP

需要注意使用​JSONP​协议时必须通过​Query​方式提供​callback​参数。

package main

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

func main() {
	s := g.Server()
	s.Group("/", func(group *ghttp.RouterGroup) {
		group.ALL("/jsonp", func(r *ghttp.Request) {
			r.Response.WriteJsonP(g.Map{
				"id":   1,
				"name": "john",
			})
		})
	})
	s.SetPort(8199)
	s.Run()
}

执行后,我们通过​curl​工具测试下:

$ curl -i "http://127.0.0.1:8199/jsonp?callback=MyCallback"
HTTP/1.1 200 OK
Server: GF HTTP Server
Date: Sun, 05 Jan 2020 02:50:42 GMT
Content-Length: 34
Content-Type: text/plain; charset=utf-8

MyCallback({"id":1,"name":"john"})

XML

package main

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

func main() {
	s := g.Server()
	s.Group("/", func(group *ghttp.RouterGroup) {
		group.ALL("/xml", func(r *ghttp.Request) {
            r.Response.Write(`<?xml version="1.0" encoding="UTF-8"?>`)
			r.Response.WriteXml(g.Map{
				"id":   1,
				"name": "john",
			})
		})
	})
	s.SetPort(8199)
	s.Run()
}

执行后,我们通过​curl​工具测试下:

$ curl -i http://127.0.0.1:8199/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Server: GF HTTP Server
Date: Sun, 05 Jan 2020 03:00:55 GMT
Content-Length: 76

<?xml version="1.0" encoding="UTF-8"?><doc><id>1</id><name>john</name></doc>


阅读全文
以上是名动网为你收集整理的go语言函数 GoFrame 数据返回-JSON/XML全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们