Iris类似于Flask框架,使用函数作为方法的入口
实例化一个app主类,通过app.方法请求类型(地址,触发函数) 来匹配请求
例如:
app.Get("/user/{name}", func(ctx iris.Context) {
name := ctx.Params().Get("name")
ctx.Writef("Hello %s", name)
})
其中获取请求的参数,主要有路径参数和字符串参数,表单参数,Json参数,文件参数
路径参数
在请求中的触发函数中可以添加上下文入参,iris.Context
比如
app.Get("/user/{username}" , func(ctx iris.Context))
如此利用上下文ctx.Params().get("username")来获取路径参数
路径可以限制参数类型,比如app.Get("/user/{username:string}") ,则限定了username为string
字符串拼接参数
比如请求链接是:http://localhost:8080/welcome?username=Jelly233&password=233
使用ctx.URLParamDefault("username"),ctx.URLParamDefault("password")均可以获取参数
表单参数
表单参数比如是username,password
通常使用ctx.PostValue("username"),ctx.PostValue("password")获取
Json参数
使用ctx.ReadJson(接收对象),其中接收对象的属性需要标注映射字段(模型绑定)
比如,使用`json:key`来标注
type Person struct {
Name string `json:name`
Pwd string `json:pwd`
}
文件参数
类似二进制文件的请求,通常使用ctx.FormFile(key)来读取,响应值分别是file,header,err
注意文件上传后使用defer file.Close()来关闭文件流
额外注意文件下载,需要使用ctx.SendFile(file文件流,文件名)来发送
对于响应结果的处理
返回HTML数据: ctx.HTML(标签内容)
返回JSON数据: ctx.Json(iris.Map{k:v,k:v})
返回XML数据: ctx.XML(map类型数据)
返回string数据: ctx.WriteString(str)
路由功能
和flask一样,iris也需要路由功能来实现接口匹配
路由方式多种多样,如下有常用几种
1.handle方式匹配方法
app.Handle(GET,POST等请求的字符串,请求路径,触发函数)
2.常用的自定义表达式获取路由
app.Get(复杂路径表达式,触发函数)
3.路由组(组合多级请求路径)
userParty := app.Party(一级请求路径,触发函数)
触发函数中可以继续Party组合下一级请求参数
或者一级触发函数中写context.Next()
继续使用userParty.Get(二级请求路径,触发函数),处理业务逻辑
如此构成的接口就是包含多级请求路径的
MVC包的使用
iris的mvc包是使用语义匹配方法
与SpringMVC不同,它不使用注解,而是使用有实际操控意义的方法名来定义接口
如
func (uc *UserController) GetInfo() JsonResult {}
那么这条接口匹配的就是http://localhost:8082/info
这个请求路径
语义有要求,如必须是开头大写的驼峰,开头必须是请求方法类型
通过mvc.Configure(app.Party(请求路径))来将Controller绑定到mvc上
或者使用mvc.New(app).Handle(new(xxxController))绑定
标签:username,Iris,入门,app,路径,ctx,笔记,参数,请求 From: https://www.cnblogs.com/lxl-233/p/18561262