Iris安裝和實現處理路由分發
阿新 • • 發佈:2019-01-09
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"))
}