接口服务器搭建
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)
}
package handler
import (
"gopkg.in/kataras/iris.v6"
)
const indexHTML = `<!DOCTYPE html><html lang="zh-CN"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Title</title></head>
<body>
<div id="root">Loading...</div>
<script src="./static/bundle.js"></script>
</body>
</html>`
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
}
}
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, "<h1>404</h1>") })
// API
handler.RegisterAPI(app)
// Server
app.Listen(":" + portnumber)
}
package main
func main() {
app.Run("8000")
}