Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/triment/eject
A restful web framework
https://github.com/triment/eject
golang restful-api web-framework
Last synced: about 2 months ago
JSON representation
A restful web framework
- Host: GitHub
- URL: https://github.com/triment/eject
- Owner: Triment
- Created: 2022-01-20T08:49:48.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2022-08-15T12:15:09.000Z (over 2 years ago)
- Last Synced: 2024-06-20T17:53:30.196Z (7 months ago)
- Topics: golang, restful-api, web-framework
- Language: Go
- Homepage:
- Size: 28.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
### eject
一个快速web框架
+ [x] 中间件系统(单向工作流,非洋葱模型)
+ [x] 集成路由中间件##### 内置路由特性
参数路由
|注册路由|实际路由|匹配参数|
|-----|-----|-----|
|/hello/:user/:post|/hello/a/b|`{ user: a, post: b }`|
|/public/*path|/public/file/a.txt|`{ path: file/a.txt }`参数路由的优先级`:`优先于`*`,如下面两个路由注册后会将path将匹配为123
注册路由1: `/public/:path/hello`
注册路由2: `/public/*path`
实际路由: `/public/123/456`
解析后的map为
```json
{
"path": "123"
}
```
如果没有注册路由1,将会解析为:
```json
{
"path": "123/456"
}
```
用法```bash
go get -u github.com/Triment/eject
``````golang
package mainimport (
"github.com/Triment/eject"
)type ResMessage struct {
Status int `json:"status"`
Body interface{} `json:"body"`
}func auth(context *eject.Context) bool {//鉴权中间件通过返回true来允许该路由正常运行,可在鉴权路由中进行响应
if context.Req.Header.Get("user")!= "admin" {
return false
}
return true
}func main(){
router := eject.CreateRouter()//创建路由
router.GET("/hello", func(context *eject.Context) {
context.Res.Write([]byte("hello word")
})//注册路由
router.GET("/", func(context *eject.Context) {
context.JSON(&ResMessage{Status: 200, Body: "请求成功"})
})
router.GET("/auth", func(context *eject.Context){
context.JSON(&ResMessage{Status: 200, Body: "请求成功"})
}).Before(auth)//鉴权中间件
app := eject.CreateApp()//创建应用
app.Inject(router.Accept())//注入路由中间件
app.Listen(":4567")//监听端口
}
```TodoList
+ [ ] ~~目前实现的中间件是单向流,如同一个处理的大函数,只不过响应和路由分离为内置的路由中间件了,下一步实现面向切面,代码注入的形式~~
+ [x] ~~目前实现的请求路由仅支持GET, POST, 将来可能会加入更多请求方法,标准化框架~~
+ [ ] 分布式应用支持,利用TCP/UDP交换节点信息,自动负载均衡(待评估,需要用概率对实际应用分析后实现相应算法)实际应用
* [fileserver](https://github.com/triment/fileserver.git) 一个文件下载系统,仅支持下载,上传请使用其他方式。