Iris框架核心内容

目录

 

Iris框架

1. Iris简介

2. Iris 实例Demo

3. Get、Post、Put和Delete

 

Iris框架

1. Iris简介

Go的web框架,只需一个可执行的服务就可以在多平台上运行了。支持MVC、构建微服务。被称为速度最快的Go后端开发框架。

  • 高性能、静态路由支持和通配符子域名支持
  • RESTFUL风格、视图模板丰富、定制事件和HTTP错误等
  • 垃圾回收GC,、对内存和redis 提供支持、热部署等特点
Windows 安装设置下代理:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go get -u github.com/gin-gonic/gin
go get github.com/kataras/iris/

Linux 下安装代理

export GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go get -u github.com/gin-gonic/gin
go get github.com/kataras/iris/

实在安装有问题的直接GoLang里面import "github.com/kataras/iris" 用IDE来安装^_^

-------------2020.4.26-----------采坑总结
可以用环境变量 GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。

GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。
GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。
GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。

所以之前设置的go env -w GO111MODULE=on是使用了Go 1.11 之后官方支持的版本管理工具 mod
此时下载的文件啥的会保存在gopath下面的pkg/mod里面。
如果不想用mod工具,把它设置成关闭,然后直接go get -u XXX (但不*,大概率下不全得手动补全)

官网:https://iris-go.com/         
源码:https://github.com/kataras/iris         
文档: https://studyiris.com/doc/

项目的结构大概可以如下规划:

#公司项目
├─bin # 存放编译后的二进制文件
├─pkg # 存放编译后的库文件
└─src # 存放源代码文件
    ├─github.com
    └─XXXtech.com # 网站域名 公司或GitHub
        └─tomasonl# 机构/作者
            ├─project1 #项目一
            │   ├─ moduleA #模块A
            │   └─ moduleB #模块B
            └─project2 #项目二
                ├─ moduleA #模块A
                └─ moduleB #模块B
#个人项目
├─bin # 编译后的二进制文件
├─pkg # 编译后的库文件
└─src # 源代码文件
    ├─github.com
    └─tomasonl.com # 网站域名 公司或GitHub
        └─leo # 机构/作者
            ├─project1 #项目一
            │   ├─ moduleA #模块A
            │   └─ moduleB #模块B
            └─project2 #项目二
                ├─ moduleA #模块A
                └─ moduleB #模块B

2.Iris 实例Demo

package main
import "github.com/kataras/iris"
func main() {
	//1.创建app结构体对象
	app := iris.New()
	//2.端口监听
	app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
	//app.Run(iris.Addr(":8080"))//第一种
	//app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed)) //第二种
}

----------------------------------------------------------
$ go run example.go
Now listening on: http://localhost:8080
Application started. Press CTRL+C to shut down.

3.Get、Post、Put和Delete

package main

import (
	"github.com/kataras/iris"
	"github.com/kataras/iris/context"
)

//main方法
func main() {
	app := iris.New()
//普通Get请求
	app.Get("/getRequest",func(context context.Context){
		path := context.Path()
		app.Logger().Info(path)
		context.WriteString("您的请求路径:"+path)
	})
//Get请求携带信息
	app.Get("/userinfo", func(context context.Context){
		userName := context.URLParam("username")
		pwd := context.URLParam("pwd")
		context.HTML("用户名:"+userName+" 密码:"+pwd)
	})
//Post请求-form表单的字段获取
	app.Post("/postLogin", func(context context.Context) {
		name := context.PostValue("name")
		pwd := context.PostValue("pwd")
        context.HTML("用户名:"+userName+" 密码:"+pwd)
	})

//Post请求-Json格式数据
	//Json内容:{"name": "leo","age": 18}
	app.Post("/postJson", func(context context.Context) {
		//Json数据解析
		var person Person
		if err := context.ReadJSON(&person); err != nil {
			panic(err.Error())
		}
		context.Writef("获取信息: %#+v\n", person)
		//输出:获取信息: main.Person{Name:"davie", Age:28}
	})

//Post请求-Xml格式数据
	/**
	 * 请求配置:Content-Type到application/xml(可选但最好设置)
	 * 请求内容:
	 *	 *  <student>
	 *		<stu_name>leo</stu_name>
	 *		<stu_age>18</stu_age>
	 *	    </student>
	 */
	app.Post("/postXml", func(context context.Context) {
		//XML数据解析
		var student Student
		if err := context.ReadXML(&student); err != nil {
			panic(err.Error())
		}
		//输出:
		context.Writef("Received:%#+v\n", student)
	})

//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(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
	
}

PS:  fmt.Printf 会根据后面参数格式化前面的字符串 ,fmt.Println 不会无格式字符串形式输出。
%v   字段的值
%+v 字段类型+字段的值
%#+v 结构体名字值+再输出结构体(字段类型+字段的值)

 

上一篇:数据可视化(基于matplotlib、seaborn库)


下一篇:机器学习No.2