You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 9 Current »
接口文档:https://godoc.org/github.com/gogf/gf/net/ghttp#Response
相关方法:
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数据格式输出的原生支持,通过以下方法实现:
Response
JSON/XML
WriteJson*
JSON
string
map
struct
Content-Type
application/json
WriteXml*
XML
application/xml
对JSON数据格式支持的同时,同时也支持JSONP协议。
JSONP
package main import ( "github.com/gogf/gf/frame/g" "github.com/gogf/gf/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
$ 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协议时必须通过Query方式提供callback参数。
Query
callback
package main import ( "github.com/gogf/gf/frame/g" "github.com/gogf/gf/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 -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"})
package main import ( "github.com/gogf/gf/frame/g" "github.com/gogf/gf/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 -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>