目录
一、Iris框架的请求处理方式
1、GET请求及获取参数
(1)处理Get请求
(2)处理Get请求 并接受参数
http://localhost:7999/hello?username="张三"&pwd="123456"
(3)正则表达式路由
Iris框架在进行处理http请求时,支持请求url中包含正则表达式。
正则表达式的具体规则为:
- 1、使用{}对增则表达式进行包裹,url中出现类似{}样式的格式,即识别为正则表达式
- 2、支持自定义增则表达式的变量的命名,变量名用字母表示。比如:{name}
- 3、支持对自定义正则表达式变量的数据类型限制,变量名和对应的数据类型之间用“:”分隔开。比如:{name:string}表示增则表达式为name,类型限定为string类型
- 4、通过context.Params()的Get()和GetXxx()系列方法来获取对应的请求url中的增则表达式的变量
- 5、增则表达式支持变量的数据类型包括:string、int、uint、bool等
2、POST请求及获取参数
(1)处理Post请求 form表单的字段获取
postman设置及请求如下:
(2)处理Post请求 Json格式数据
postman设置及请求如下:
Postman工具选择[{"key":"Content-Type","value":"application/json","description":""}]
请求内容:{"name": "davie","age": 28}
(3)处理Post请求 Xml格式数据
postman设置及请求如下:
Postman工具选择[{"key":"Content-Type","value":"application/xml","description":""}]
请求内容:
<Person>
<Name>大大</Name>
<Age>56</Age>
</Person>
3、PUT请求
4、DELETE请求
5、完整代码
(1)model
package model
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
(2)main函数
func main() {
app := iris.New()
//url: http://localhost:8000/getRequest
//type:GET请求
app.Get("/getRequest", func(context context.Context) {
//获取path
path := context.Path()
//日志输出
app.Logger().Info(path)
//写入返回数据
context.WriteString(path)
})
app.Handle("GET", "/hello", func(context context.Context) {
path := context.Path()
app.Logger().Info(path)
//获取get请求所携带的参数
userName := context.URLParam("username")
app.Logger().Info(userName)
pwd := context.URLParam("pwd")
app.Logger().Info(pwd)
//返回html数据格式
context.HTML("<h1>" + userName + "," + pwd + "</h1>")
})
//处理Post请求 form表单的字段获取
app.Post("/postLogin", func(context context.Context) {
path := context.Path()
app.Logger().Info(path)
//context.PostValue方法来获取post请求所提交的form表单数据
name := context.PostValue("name")
pwd := context.PostValue("pwd")
app.Logger().Info(name, "==", pwd)
context.HTML(name, "==", pwd)
})
app.Post("/postJson", func(context context.Context) {
path := context.Path()
app.Logger().Info("请求URL:",path)
//2.Json数据解析
var person model.Person
//通过context.ReadJSON()读取传过来的数据
if err := context.ReadJSON(&person); err != nil {
panic(err.Error())
}
//返回格式化的内容
context.Writef("Received: %#+v\n", person)
})
app.Post("/postXml", func(context context.Context) {
//1.Path
path := context.Path()
app.Logger().Info("请求URL:", path)
//2.XML数据解析
var person model.Person
if err := context.ReadXML(&person); err != nil {
panic(err.Error())
}
//返回格式化的内容
context.Writef("Received:%#+v\n", person)
})
//url:http://localhost:8000/user/info
//type:POST请求,Handle方法第一个参数为POST,表明是Post请求
app.Handle("POST", "/user/info", func(context context.Context) {
context.WriteString(" User Info is Post Request , Deal is in handle func ")
})
//put请求
app.Put("/putinfo", func(context context.Context) {
path := context.Path()
app.Logger().Info("请求url:", path)
})
//delete请求
app.Delete("/deleteuser", func(context context.Context) {
path := context.Path()
app.Logger().Info("Delete请求url:", path)
})
app.Run(iris.Addr("localhost:7999"))
}
二、请求处理的数据格式返回
返回string类型数据
context.WriteString("hello world")
返回json格式的数据
context.JSON(iris.Map{"message": "hello word", "requestCode": 200})
返回xml格式的数据
context.XML(Person{Name: "Davie", Age: 18})
返回html格式数据
context.HTML(" Davie, 12 ")