示例1,简单示例

    执行后,我们通过curl工具提交数据来测试一下:

    1. Query数据格式

      1. $ curl "http://127.0.0.1:8199/?name=john&pass=123"
      2. name: john, pass: 123
    2. Form表单提交

      1. $ curl -d '{"name":"john","pass":"123"}' "http://127.0.0.1:8199/"
      2. name: john, pass: 123
    3. XML数据格式

      ``` $ curl -d ‘<?xml version=”1.0” encoding=”UTF-8”?>john123‘ ““ name: john, pass: 123

    示例2,对象转换及校验

    1. package main
    2. import (
    3. "github.com/gogf/gf/v2/frame/g"
    4. "github.com/gogf/gf/v2/net/ghttp"
    5. "github.com/gogf/gf/v2/util/gvalid"
    6. )
    7. type RegisterReq struct {
    8. Name string `p:"username" v:"required|length:6,30#请输入账号|账号长度为:min到:max位"`
    9. }
    10. type RegisterRes struct {
    11. Code int `json:"code"`
    12. Error string `json:"error"`
    13. Data interface{} `json:"data"`
    14. }
    15. func main() {
    16. s := g.Server()
    17. s.BindHandler("/register", func(r *ghttp.Request) {
    18. var req *RegisterReq
    19. if err := r.Parse(&req); err != nil {
    20. // Validation error.
    21. if v, ok := err.(gvalid.Error); ok {
    22. r.Response.WriteJsonExit(RegisterRes{
    23. Code: 1,
    24. Error: v.FirstString(),
    25. })
    26. }
    27. r.Response.WriteJsonExit(RegisterRes{
    28. Code: 1,
    29. Error: err.Error(),
    30. })
    31. }
    32. // ...
    33. r.Response.WriteJsonExit(RegisterRes{
    34. Data: req,
    35. })
    36. })
    37. s.SetPort(8199)
    38. s.Run()
    39. }

    执行后,我们通过curl工具提交数据来测试一下:

    1. ``` $ curl -d ‘{“username”:”johngcn”,”password1”:”123456”,”password2”:”123456”}’ ““ {“code”:0,”error”:””,”data”:{“Name”:”johngcn”,”Pass”:”123456”,”Pass2”:”123456”}}

    1. XML数据格式

      ``` $ curl -d ‘<?xml version=”1.0” encoding=”UTF-8”?>johngcn123456123456‘ “http://127.0.0.1:8199/register“ {“code”:0,”error”:””,”data”:{“Name”:”johngcn”,”Pass”:”123456”,”Pass2”:”123456”}}

    1. $ curl -d '<?xml version="1.0" encoding="UTF-8"?><doc><username>johngcn</username><password1>123456</password1><password2>123</password2></doc>' "http://127.0.0.1:8199/register"
    2. {"code":1,"error":"两次密码不一致","data":null}
    3. ```
    4. 可以看到,我们提交的`XML`内容也被`Parse`方法智能地转换为了结构体对象。