基于Golang的轻量级API框架
- 一键初始化项目,快速开发
- 支持平滑重启
- 路由自动注册
- 编码友好的Orm查询,无需字段映射,无需定义返回结构体
- 请求参数自动校验及数据类型转换
- 请求无需传递Context
- PHP开发者熟悉的异常处理
- 低侵入性设计,现有struct一行代码即可对外服务
- 支持中间件
- 低耦合模块化设计
创建 go.mod
go mod init api
创建 hello.go
package main
import "github.com/boyxp/nova"
import "github.com/boyxp/nova/router"
func main() {
router.Register(Hello{})
nova.Listen("9800").Run()
}
type Hello struct {}
func (h *Hello) Hi(name string) map[string]string {
return map[string]string{"name":"hello "+name}
}
安装依赖
go mod tidy
启动
go run hello.go
POST请求接口
curl -X POST -d 'name=eve' 127.0.0.1:9800/hello/hi
curl -s https://raw.githubusercontent.com/boyxp/nova/master/init.sh | sh
启动进程
sh manage.sh start
查看进程状态
sh manage.sh status
平滑重启(执行build,重启过程旧请求不中断)
sh manage.sh restart
重新加载配置(不执行build,只重新加载环境变量配置)
sh manage.sh reload
停止进程(将在请求完成后退出)
sh manage.sh stop
更新代码并重启
sh manage.sh upgrade
进入 controller 目录,创建struct,并将struct注册到路由
package controller
import "github.com/boyxp/nova/router"
func init() {
router.Register(Hello{})
}
type Hello struct {}
func (h *Hello) Hi(name string) map[string]string {
return map[string]string{"name":"hello "+name}
}
重启进程
sh manage.sh restart
POST请求接口
curl -X POST -d 'name=eve' 127.0.0.1:9800/hello/hi