W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
從?GoFrame v1.11
?版本開(kāi)始,?Request
?對(duì)象提供了對(duì)客戶(hù)端提交的?JSON/XML
?數(shù)據(jù)格式的原生支持,為開(kāi)發(fā)者提供了更便捷的數(shù)據(jù)獲取特性,以進(jìn)一步提高開(kāi)發(fā)效率。
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
func main() {
s := g.Server()
s.BindHandler("/", func(r *ghttp.Request) {
r.Response.Writef("name: %v, pass: %v", r.Get("name"), r.Get("pass"))
})
s.SetPort(8199)
s.Run()
}
執(zhí)行后,我們通過(guò)?curl
?工具提交數(shù)據(jù)來(lái)測(cè)試一下:
Query
?數(shù)據(jù)格式$ curl "http://127.0.0.1:8199/?name=john&pass=123"
name: john, pass: 123
Form
?表單提交$ curl -d "name=john&pass=123" "http://127.0.0.1:8199/"
name: john, pass: 123
JSON
?數(shù)據(jù)格式$ curl -d '{"name":"john","pass":"123"}' "http://127.0.0.1:8199/"
name: john, pass: 123
XML
?數(shù)據(jù)格式$ curl -d '<?xml version="1.0" encoding="UTF-8"?><doc><name>john</name><pass>123</pass></doc>' "http://127.0.0.1:8199/"
name: john, pass: 123
$ curl -d '<doc><name>john</name><pass>123</pass></doc>' "http://127.0.0.1:8199/"
name: john, pass: 123
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/util/gvalid"
)
type RegisterReq struct {
Name string `p:"username" v:"required|length:6,30#請(qǐng)輸入賬號(hào)|賬號(hào)長(zhǎng)度為:min到:max位"`
Pass string `p:"password1" v:"required|length:6,30#請(qǐng)輸入密碼|密碼長(zhǎng)度不夠"`
Pass2 string `p:"password2" v:"required|length:6,30|same:password1#請(qǐng)確認(rèn)密碼|密碼長(zhǎng)度不夠|兩次密碼不一致"`
}
type RegisterRes struct {
Code int `json:"code"`
Error string `json:"error"`
Data interface{} `json:"data"`
}
func main() {
s := g.Server()
s.BindHandler("/register", func(r *ghttp.Request) {
var req *RegisterReq
if err := r.Parse(&req); err != nil {
// Validation error.
if v, ok := err.(gvalid.Error); ok {
r.Response.WriteJsonExit(RegisterRes{
Code: 1,
Error: v.FirstString(),
})
}
// Other error.
r.Response.WriteJsonExit(RegisterRes{
Code: 1,
Error: err.Error(),
})
}
// ...
r.Response.WriteJsonExit(RegisterRes{
Data: req,
})
})
s.SetPort(8199)
s.Run()
}
執(zhí)行后,我們通過(guò)?curl
?工具提交數(shù)據(jù)來(lái)測(cè)試一下:
JSON
?數(shù)據(jù)格式$ curl -d '{"username":"johngcn","password1":"123456","password2":"123456"}' "http://127.0.0.1:8199/register"
{"code":0,"error":"","data":{"Name":"johngcn","Pass":"123456","Pass2":"123456"}}
$ curl -d '{"username":"johngcn","password1":"123456","password2":"123"}' "http://127.0.0.1:8199/register"
{"code":1,"error":"兩次密碼不一致","data":null}
可以看到,我們提交的?JSON
?內(nèi)容也被?Parse
?方法智能地轉(zhuǎn)換為了結(jié)構(gòu)體對(duì)象。
XML
?數(shù)據(jù)格式$ curl -d '<?xml version="1.0" encoding="UTF-8"?><doc><username>johngcn</username><password1>123456</password1><password2>123456</password2></doc>' "http://127.0.0.1:8199/register"
{"code":0,"error":"","data":{"Name":"johngcn","Pass":"123456","Pass2":"123456"}}
$ 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"
{"code":1,"error":"兩次密碼不一致","data":null}
可以看到,我們提交的?XML
?內(nèi)容也被?Parse
?方法智能地轉(zhuǎn)換為了結(jié)構(gòu)體對(duì)象。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: