一、基础学习
(一)网络请求方法
iris框架 创建的后端应用支持 Get、Post、Head、Options、Patch、Delete、Put方法
package irisLearn
import (
"fmt"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/context"
)
func Methods() {
app := iris.Default()
app.Get("/someGet", getting)
app.Post("/somePost", posting)
app.Head("/someHead", heading)
app.Put("/somePut", putting)
app.Delete("/someDelete", deleting)
app.Patch("/somePatch", patching)
app.Options("/someOptions", optioning)
app.Listen(":8080")
}
func optioning(c *context.Context) {
fmt.Println("optioning")
}
func patching(c *context.Context) {
fmt.Println("patching")
}
func deleting(c *context.Context) {
fmt.Println("deleting")
}
func putting(c *context.Context) {
fmt.Println("putting")
}
func heading(c *context.Context) {
fmt.Println("heading")
}
func posting(c *context.Context) {
fmt.Println("posting")
}
func getting(context *context.Context) {
fmt.Println("getting")
}
(二)路径中获取参数
在请求路径中可传入参数,但是在路径必须保证参数不为空,否则出现请求路径不一致的情况
使用方法
"/path/{parameter_name:parameter_type}"
实例代码
package irisLearn
import "github.com/kataras/iris/v12"
func ParametersInPath() {
app := iris.Default()
// This handler will match /user/john but will not match /user/ or /user
app.Get("/user/{name}", func(context iris.Context) {
name := context.Params().Get("name")
context.Writef("Hello %s", name)
})
app.Get("/user/{name:string}/{action:path}", func(context iris.Context) {
name := context.Params().Get("name")
action := context.Params().Get("action")
message := name + action
context.WriteString(message)
})
app.Post("/user/{name:string}/{action:path}", func(context iris.Context) {
b := context.GetCurrentRoute().Tmpl().Src == "/user/{name:string}/{action:path}"
context.Writef("%s", b)
})
app.Listen(":8080")
}
验证请求
$ curl -Method Get "http://localhost:8080/user/john/eating"
// result
content:johneating
(三)获取请求路径中的参数
获取方法
使用 Context.URLParamDefault("parameter_name","default_string")
使用 Context.URLParam("parameter_name")
实例代码
package irisLearn
import "github.com/kataras/iris/v12"
func QuerystringParameters() {
app := iris.Default()
app.Get("/welcome", func(context iris.Context) {
firstName := context.URLParamDefault("firstname", "john")
secondName := context.URLParam("secondname")
context.Writef("Hello %s %s", firstName, secondName)
})
app.Listen(":8080")
}
验证请求
$ curl "http://localhost:8080/welcome?firstname=lily&secondname=freak"
// result
content:"Hello lily freak"
(四)获取Form表单数据
获取方法
Context.PostValue("parameter_name")
Context.PostValueDefault("parameter_name","default_value")
实例代码
package irisLearn
import "github.com/kataras/iris/v12"
func MultipartUrlencodedForm() {
app := iris.Default()
app.Post("/form_post", func(context iris.Context) {
message := context.PostValue("message")
nick := context.PostValueDefault("nick", "anonymous")
context.JSON(iris.Map{
"status": "posted",
"message": message,
"nick": nick,
})
})
app.Listen(":8080")
}
验证请求
$ curl -Method Post -Body {message="this is a message"} http://localhost:8080/form_post
//result
Content : {"message":"\"this is message\"","nick":"anonymous
","status":"posted"}
(五)路由分组
获取方法
app.Party("path")
使用上述方法可以将path 路径作为一个分组,后续路径可以在这个分组中定义
实例代码
package irisLearn
import (
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/context"
)
func GroupRoute() {
app := iris.Default()
// v1是一个分组
v1 := app.Party("/v1")
{
v1.Post("/login",loginEndPoint)
}
app.Listen(":8080")
}
func loginEndPoint(context *context.Context) {
fmt.Println("loginEndPoint")
}
(六)日志打印到文件
使用方法
app.Logger().SetOutput("file")
实例代码
package irisLearn
import (
"github.com/kataras/iris/v12"
"os"
)
func ApplicationFileLogger() {
app := iris.Default()
f, _ := os.Create("iris.log")
app.Logger().SetOutput(f)
app.Get("/ping", func(context iris.Context) {
context.WriteString("pong")
})
app.Listen(":8080")
}