https://github.com/swxctx/malatd
简洁+易用的Golang Web框架
https://github.com/swxctx/malatd
go golang http-server web
Last synced: 5 months ago
JSON representation
简洁+易用的Golang Web框架
- Host: GitHub
- URL: https://github.com/swxctx/malatd
- Owner: swxctx
- License: apache-2.0
- Created: 2020-06-16T08:37:18.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-10-28T03:16:58.000Z (8 months ago)
- Last Synced: 2025-10-28T05:21:39.858Z (8 months ago)
- Topics: go, golang, http-server, web
- Language: Go
- Homepage:
- Size: 143 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# malatd
简洁+易用的Golang Web框架
### 使用
[查看详细使用说明](https://github.com/swxctx/malatd/tree/master/cmd)
```shell
NAME:
Malatd project command - A deployment tools of malatd frameware
USAGE:
malatd [global options] command [command options] [arguments...]
VERSION:
1.0.0
AUTHOR:
swxctx
COMMANDS:
gen Generate a malatd project
run Compile and run go project
doc Generate a project README.md(malatd doc || malatd doc -r ${root_group})
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
```
### 普通使用
```
package main
import (
td "github.com/swxctx/malatd"
)
/*
http://127.0.0.1:8080/malatd
*/
func main() {
// new server
srv := td.NewServer(td.NewSrvConfig())
// api router
srv.Get("/malatd", malatdApi)
srv.Post("/malatd", malatdApi)
srv.Run()
}
// malatd
func malatdApi(ctx *td.Context) {
ctx.RenderString("malatd")
}
```
### 使用插件
```
package main
import (
td "github.com/swxctx/malatd"
)
/*
http://127.0.0.1:8080/malatd?id=123
*/
func main() {
// new server
srv := td.NewServer(
td.NewSrvConfig(),
tokenPlugin,
)
// api router
srv.Get("/malatd/v1", authPlugin, malatdApi)
srv.Run()
}
// tokenPlugin
func tokenPlugin(ctx *td.Context) {
xlog.Infof("tokenPlugin: current tokenPlugin")
xlog.Infof("tokenPlugin: Params-> %v", ctx.Request.URL.Query().Get("id"))
ctx.Next()
}
// authHandle
func authPlugin(ctx *td.Context) {
xlog.Infof("authPlugin: current authPlugin")
xlog.Infof("authPlugin: Params-> %v", ctx.Request.URL.Query().Get("id"))
ctx.Next()
}
// malatd
func malatdApi(ctx *td.Context) {
xlog.Infof("malatdApi: current malatdApi")
xlog.Infof("malatdApi: Params-> %v", ctx.Request.URL.Query().Get("id"))
ctx.RenderString("hello malatd")
}
```
### 参数绑定
```
package main
import (
"github.com/swxctx/malatd/binding"
td "github.com/swxctx/malatd"
)
/*
http://127.0.0.1:8080/malatd
*/
func main() {
// new server
srv := td.NewServer(td.NewSrvConfig())
// api router
srv.Get("/malatd1", malatdApi1Handle)
srv.Post("/malatd2", malatdApi2Handle)
srv.Run()
}
type Args struct {
A int `query:"a" json:"a"`
B string `query:"b" json:"b"`
C string `json:"c"`
}
type Result struct {
A int `json:"a"`
B string `json:"b"`
C string `json:"c"`
}
var (
binder = binding.JSON
binderQuery = binding.QUERY
)
// malatdApi1Handle
func malatdApi1Handle(ctx *td.Context) {
// bind params
params := new(Args)
err := binderQuery.Bind(ctx, params)
if err != nil {
ctx.RenderRerr(td.RerrInternalServer.SetReason(err.Error()))
return
}
// api逻辑调用
result, rerr := malatdApi1Logic(ctx, params)
if rerr != nil {
ctx.RenderRerr(rerr)
return
}
ctx.Render(result)
}
// malatdApi1Logic
func malatdApi1Logic(ctx *td.Context, arg *Args)(*Result, *td.Rerror) {
xlog.Infof("Args-> %v", arg)
result := &Result{
A: arg.A,
B: arg.B,
C: arg.C,
}
return result, nil
}
// malatdApi2Handle
func malatdApi2Handle(ctx *td.Context) {
// bind params
params := new(Args)
err := binder.Bind(ctx, params)
if err != nil {
ctx.RenderRerr(td.RerrInternalServer.SetReason(err.Error()))
return
}
err = binderQuery.Bind(ctx, params)
if err != nil {
ctx.RenderRerr(td.RerrInternalServer.SetReason(err.Error()))
return
}
// api逻辑调用
result, rerr := malatdApi2Logic(ctx, params)
if rerr != nil {
ctx.RenderRerr(rerr)
return
}
ctx.Render(result)
}
func malatdApi2Logic(ctx *td.Context, arg *Args)(*Result, *td.Rerror) {
xlog.Infof("Args-> %v", arg)
result := &Result{
A: arg.A,
B: arg.B,
C: arg.C,
}
return result, nil
}
```