版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010277446/article/details/80627258
Iris路由分发
一、环境
- 需要先安装golang
二、安装
1.go get 安装
go get -u github.com/kataras/iris
2.hello word
package main
import "github.com/kataras/iris"
func main() {
app := iris.Default()
// Method: GET
// Resource: http://localhost:8080/
app.Handle("GET", "/", func(ctx iris.Context) {
ctx.HTML("Hello world!")
})
app.Run(iris.Addr(":8080"))
}
三、处理路由分发
萌新实现,思路有限,客官且看轻喷
1.以功能模块创建独立的路由分发文件
以用户信息管理为例
创建userRoutes.go:
package route
import (
"github.com/kataras/iris"
"mcGoApi/api/login/controllers"
)
var usersRoutes iris.Party
//为外提供一个设置主路由的方法
func (u *UserRouter) SetUserRouter(app *iris.Application, path string) {
usersRoutes = app.Party(path)
//路由分发,这里再次路由分发,将功能块再次细化
setLoginRoute()
setUserInfoRoute()
}
/*
* 登录模块
* @uri:/mcos/login
*/
func setLoginRoute() {
// POST: http://localhost:8080/mcos/login/
usersRoutes.Post("/login", func(ctx iris.Context) {
hander_req_post := &controllers.UserController{
Ctx: ctx,
}
hander_req_post.PostLogin()
})
}
/*
* 用户信息处理模块路由
* 也是功能模块的入口(请求的控制器、服务处理和数据模型封装不在此说明)
* @uri:/mcos/userinfo
*/
func setUserInfoRoute() {
// GET: http://localhost:8080/mcos/userinfo/42
usersRoutes.Get("/userinfo/{id:string}", func(ctx iris.Context) {
hander_req_get := &controllers.UserController{
Ctx: ctx,
}
hander_req_get.GetUserInfo()
})
// POST: http://localhost:8080/mcos/userinfo/
usersRoutes.Post("/userinfo", func(ctx iris.Context) {
hander_req_post := &controllers.UserController{
Ctx: ctx,
}
hander_req_post.PostRegister()
})
// PUT: http://localhost:8080/mcos/userinfo/
usersRoutes.Put("/userinfo/{id:int}", func(ctx iris.Context) {
hander_req_put := &controllers.UserController{
Ctx: ctx,
}
hander_req_put.PutUserInfo()
})
// DELETE: http://localhost:8080/mcos/userinfo/42
usersRoutes.Delete("/userinfo/{id:int}", func(ctx iris.Context) {
hander_req_del := &controllers.UserController{
Ctx: ctx,
}
hander_req_del.DeleteUser()
})
}
2.mai()启动iris提供服务并设置路由分发
/*
* mcGoApi
* go语言实现的接口请求框架
* 基于Iris封装开发
*/
package main
import (
"github.com/kataras/iris"
"log"
"mcGoApi/api/route"
"mcGoApi/database/mysql/mysqltools"
"os"
)
func main() {
// init database pool(此为我对数据库orm连接的封装,不在此详细说)
issucc := mysqltools.GetInstance().InitDataPool()
if !issucc {
log.Println("init database pool failure...")
os.Exit(1)
}
app := iris.New()
// Grouping,路由分发,用户信息处理模块设置主路由"/mcos"
new(route.UserRouter).SetUserRouter(app, "/mcos")
app.Run(iris.Addr(":8080"))
}