接口服务器搭建
数据库 xorm
框架 - Iris
app/model/default.go
package model
import (
_ "github.com/lib/pq"
"github.com/go-xorm/xorm"
)
func Check(err error) {
defer func() { err = nil }()
if err != nil {
println("****ERROR****")
panic(err)
}
}
var xdb *xorm.Engine
func init() {
var err error
xdb, err = xorm.NewEngine(
"postgres",
"user=postgres password=17112 host=127.0.0.1 port=5432 dbname=postgres sslmode=disable",
)
Check(err)
// 数据表同步
err = xdb.Sync2(new())
Check(err)
}
app/handler/index.go
package handler
import (
"gopkg.in/kataras/iris.v6"
)
const indexHTML = `
Title`
func index(ctx *iris.Context) {
ctx.HTML(iris.StatusOK, indexHTML)
}
// API
func RegisterAPI(app *iris.Framework) {
app.Get("/", index)
// Router
api := app.Party("/api")
{
_ = api
}
}
app/app.go
package app
import (
"gopkg.in/kataras/iris.v6"
"gopkg.in/kataras/iris.v6/adaptors/sessions"
"gopkg.in/kataras/iris.v6/adaptors/httprouter"
"gopkg.in/kataras/iris.v6/middleware/recover"
"time"
)
var (
app = iris.New()
session = sessions.New(sessions.Config{
// Session 的客户端 cookie 名称,默认为 "irissessionid"
Cookie: "sessionid",
// 生命周期: 0 表示不过期 -1 表示浏览器关闭时过期
Expires: time.Hour * 2, // 或设置一个值,如 2 小时
CookieLength: 32, // sessionid 的 cookie 值的长度
// 如果您想要在不同的子域上无效的 Cookie 的同一主机,然后启用它
DisableSubdomainPersistence: false,
})
)
func Run(portnumber string) {
//app.Favicon("./logo.ico") // 图标
// 路由
app.Adapt(httprouter.New())
// session
app.Adapt(session)
// 静态文件服务器
app.StaticWeb("/static", "./assets")
// 服务器恢复机制
app.Use(recover.New())
// 404
app.OnError(iris.StatusNotFound, func(c *iris.Context) { c.HTML(iris.StatusOK, "
404
") })// API
handler.RegisterAPI(app)
// Server
app.Listen(":" + portnumber)
}
app.go
package main
func main() {
app.Run("8000")
}