diff --git a/.example/net/ghttp/server/middleware/middleware.go b/.example/net/ghttp/server/middleware/middleware.go
index c870d7c16..9eaafcaee 100644
--- a/.example/net/ghttp/server/middleware/middleware.go
+++ b/.example/net/ghttp/server/middleware/middleware.go
@@ -1 +1,40 @@
-package middleware
+package main
+
+import (
+ "github.com/gogf/gf/frame/g"
+ "github.com/gogf/gf/net/ghttp"
+)
+
+func main() {
+ s := g.Server()
+ s.Group("/api.v2", func(g *ghttp.RouterGroup) {
+ g.Middleware(func(r *ghttp.Request) {
+ r.Response.Write("start")
+ r.Middleware.Next()
+ r.Response.Write("end")
+ })
+ g.Group("/order", func(g *ghttp.RouterGroup) {
+ g.GET("/list", func(r *ghttp.Request) {
+ r.Response.Write("list")
+ })
+ })
+ g.Group("/user", func(g *ghttp.RouterGroup) {
+ g.GET("/info", func(r *ghttp.Request) {
+ r.Response.Write("info")
+ })
+ g.POST("/edit", func(r *ghttp.Request) {
+ r.Response.Write("edit")
+ })
+ })
+ g.Group("/hook", func(g *ghttp.RouterGroup) {
+ g.Hook("/*", ghttp.HOOK_BEFORE_SERVE, func(r *ghttp.Request) {
+ r.Response.Write("hook any")
+ })
+ g.Hook("/:name", ghttp.HOOK_BEFORE_SERVE, func(r *ghttp.Request) {
+ r.Response.Write("hook name")
+ })
+ })
+ })
+ s.SetPort(8199)
+ s.Run()
+}
diff --git a/README.MD b/README.MD
index 0c4b3ab7e..8807717ab 100644
--- a/README.MD
+++ b/README.MD
@@ -1,6 +1,4 @@
# GoFrame
-
-

[](https://godoc.org/github.com/gogf/gf/g#pkg-subdirectories)
[](https://travis-ci.org/gogf/gf)
@@ -9,16 +7,16 @@
[](https://github.com/gogf/gf)
[](https://github.com/gogf/gf)
-
+English | [简体中文](README_ZH.MD)
-`GF(GoFrame)` is a modular, full-featured and production-ready application development framework of golang. Providing a series of core components and dozens of practical modules, such as: memcache, configure, validator, logging, array/queue/set/map containers, timer/timing tasks, file/memory lock, object pool, database ORM, etc. Supporting web server integrated with router, cookie, session, logger, template, https, hooks, rewrites and many more features.
+`GF(GoFrame)` is a modular, full-featured and production-ready application development framework of golang. Providing a series of core components and dozens of practical modules, such as: memcache, configure, validator, logging, array/queue/set/map containers, timer/timing tasks, file/memory lock, object pool, database ORM, etc. Supporting web server integrated with router, cookie, session, middleware, logger, template, https, hooks, rewrites and many more features.
# Installation
```
go get -u github.com/gogf/gf
```
-or use `go.mod`:
+suggested using `go.mod`:
```
require github.com/gogf/gf latest
```
@@ -35,7 +33,7 @@ golang version >= 1.10
# Architecture
-

+
# Quick Start
@@ -57,28 +55,7 @@ func main() {
s.Run()
}
```
-## Rich Router
-```go
-package main
-
-import (
- "github.com/gogf/gf/net/ghttp"
- "github.com/gogf/gf/frame/g"
-)
-
-func main() {
- s := g.Server()
- s.BindHandler("/{class}-{course}/:name/*act", func(r *ghttp.Request) {
- r.Response.Writeln(r.Get("class"))
- r.Response.Writeln(r.Get("course"))
- r.Response.Writeln(r.Get("name"))
- r.Response.Writeln(r.Get("act"))
- })
- s.SetPort(8199)
- s.Run()
-}
-```
-## Group Routers
+## Router & Middleware
```go
package main
@@ -87,53 +64,41 @@ import (
"github.com/gogf/gf/net/ghttp"
)
-type Object struct {}
-
-func (o *Object) Show(r *ghttp.Request) {
- r.Response.Writeln("Object Show")
-}
-
-func (o *Object) Delete(r *ghttp.Request) {
- r.Response.Writeln("Object REST Delete")
-}
-
-func Handler(r *ghttp.Request) {
- r.Response.Writeln("Handler")
-}
-
-func HookHandler(r *ghttp.Request) {
- r.Response.Writeln("Hook Handler")
-}
-
func main() {
- s := g.Server()
- obj := new(Object)
- group := s.Group("/api")
- group.ALL ("*", HookHandler, ghttp.HOOK_BEFORE_SERVE)
- group.ALL ("/handler", Handler)
- group.ALL ("/obj", obj)
- group.GET ("/obj/showit", obj, "Show")
- group.REST("/obj/rest", obj)
- s.SetPort(8199)
- s.Run()
-}
-```
-or
-```go
-func main() {
- s := g.Server()
- obj := new(Object)
- s.Group("/api").Bind([]ghttp.GroupItem{
- {"ALL", "*", HookHandler, ghttp.HOOK_BEFORE_SERVE},
- {"ALL", "/handler", Handler},
- {"ALL", "/obj", obj},
- {"GET", "/obj/showit", obj, "Show"},
- {"REST", "/obj/rest", obj},
+ s := g.Server()
+ s.Group("/api.v2", func(g *ghttp.RouterGroup) {
+ g.Middleware(func(r *ghttp.Request) {
+ r.Response.Write("start")
+ r.Middleware.Next()
+ r.Response.Write("end")
+ })
+ g.Group("/order", func(g *ghttp.RouterGroup) {
+ g.GET("/list", func(r *ghttp.Request) {
+ r.Response.Write("list")
+ })
+ })
+ g.Group("/user", func(g *ghttp.RouterGroup) {
+ g.GET("/info", func(r *ghttp.Request) {
+ r.Response.Write("info")
+ })
+ g.POST("/edit", func(r *ghttp.Request) {
+ r.Response.Write("edit")
+ })
+ })
+ g.Group("/hook", func(g *ghttp.RouterGroup) {
+ g.Hook("/*", ghttp.HOOK_BEFORE_SERVE, func(r *ghttp.Request) {
+ r.Response.Write("hook any")
+ })
+ g.Hook("/:name", ghttp.HOOK_BEFORE_SERVE, func(r *ghttp.Request) {
+ r.Response.Write("hook name")
+ })
+ })
})
s.SetPort(8199)
s.Run()
}
```
+
## Multi ports & domains
```go
package main
diff --git a/README_ZH.MD b/README_ZH.MD
index 41835f17e..3b3487f2a 100644
--- a/README_ZH.MD
+++ b/README_ZH.MD
@@ -1,7 +1,4 @@
# GoFrame
-
-

-
[](https://godoc.org/github.com/gogf/gf/g#pkg-subdirectories)
[](https://travis-ci.org/gogf/gf)
[](https://goreportcard.com/report/github.com/gogf/gf)
@@ -9,10 +6,10 @@
[](https://github.com/gogf/gf)
[](https://github.com/gogf/gf)
-
+[English](README.MD) | 简体中文
-`GF(Go Frame)`是一款模块化、高性能、生产级Go应用开发框架。提供了常用的核心开发组件,如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、数据校验、数据编码、文件监控、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信、
-并发安全容器等等。并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、服务注册、配置管理、模板引擎等等,支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite等特性。
+`GF(Go Frame)`是一款模块化、高性能、生产级Go应用开发框架。提供了常用的核心开发组件,如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、资源管理、数据校验、数据编码、文件监控、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信、
+并发安全容器等等。并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、配置管理、模板引擎等等,支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite等特性。
# 特点
@@ -28,8 +25,7 @@
```html
go get -u github.com/gogf/gf
```
-或者
-`go.mod`:
+推荐使用 `go.mod`:
```
require github.com/gogf/gf latest
```
@@ -41,7 +37,7 @@ golang版本 >= 1.10
# 架构
-

+