在GoFrame中,处理 JSON 和 XML 格式的请求输入是比较常见的需求。 GoFrame 提供了方便的方法来解析和处理这两种格式的数据。

JSON 格式

以下是处理 JSON 格式请求体的简单示例:
package main

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

type User struct {
ID   int    `json:"id"`
Name string `json:"name"`
Age  int    `json:"age"`
}

func main() {
s := g.Server()

// 注册路由
s.BindHandler("/json", func(r *ghttp.Request) {
// 获取 JSON 请求体
var user User
if err := r.GetJson(&user); err != nil {
r.Response.Write("JSON 解析失败:" + err.Error())
return
}

// 打印解析结果
fmt.Printf("ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)

// 返回成功响应
r.Response.Write("JSON 请求成功")
})

// 启动 Web 服务器
s.Run()
}

在这个示例中,我们定义了一个 User 结构体,然后使用 r.GetJson 方法解析 JSON 请求体。这里 User 结构体的字段标签指定了 JSON 数据中对应字段的名称。

XML 格式

以下是处理 XML 格式请求体的简单示例:
package main

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

type UserXML struct {
ID   int    `xml:"id"`
Name string `xml:"name"`
Age  int    `xml:"age"`
}

func main() {
s := g.Server()

// 注册路由
s.BindHandler("/xml", func(r *ghttp.Request) {
// 获取 XML 请求体
var user UserXML
if err := r.GetXml(&user); err != nil {
r.Response.Write("XML 解析失败:" + err.Error())
return
}

// 打印解析结果
fmt.Printf("ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)

// 返回成功响应
r.Response.Write("XML 请求成功")
})

// 启动 Web 服务器
s.Run()
}

在这个示例中,我们定义了一个 UserXML 结构体,然后使用 r.GetXml 方法解析 XML 请求体。同样,结构体的字段标签指定了 XML 数据中对应字段的名称。

这些示例演示了如何在 GoFrame 中处理 JSON 和 XML 格式的请求体。在实际应用中,你可以根据需求进一步扩展和优化处理逻辑。


转载请注明出处:http://www.zyzy.cn/article/detail/7820/GoFrame