Go iris Web 框架 学习笔记

一、基础学习

(一)网络请求方法

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")
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值