fix bm middleware doc (#273)

pull/274/head
Felix Hao 5 years ago committed by GitHub
parent f06cafc8dd
commit c1f9b5ca81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      doc/wiki-cn/blademaster-mid.md

@ -4,7 +4,8 @@
# 写自己的中间件 # 写自己的中间件
middleware本质上就是一个handler,如下代码: middleware本质上就是一个handler,接口和方法声明如下代码:
```go ```go
// Handler responds to an HTTP request. // Handler responds to an HTTP request.
type Handler interface { type Handler interface {
@ -21,7 +22,7 @@ func (f HandlerFunc) ServeHTTP(c *Context) {
``` ```
1. 实现了`Handler`接口,可以作为engine的全局中间件使用:`engine.Use(YourHandler)` 1. 实现了`Handler`接口,可以作为engine的全局中间件使用:`engine.Use(YourHandler)`
2. 声明为`HandlerFunc`方法,可以作为router的局部中间件使用:`e.GET("/path", YourHandlerFunc)` 2. 声明为`HandlerFunc`方法,可以作为engine的全局中间件使用:`engine.UseFunc(YourHandlerFunc)`,也可以作为router的局部中间件使用:`e.GET("/path", YourHandlerFunc)`
简单示例代码如下: 简单示例代码如下:
@ -42,16 +43,17 @@ d := &Demo{}
e.Use(d) e.Use(d)
// HandlerFunc使用如下: // HandlerFunc使用如下:
e.UseFunc(d.ServeHTTP)
e.GET("/path", d.ServeHTTP) e.GET("/path", d.ServeHTTP)
// 或者只有方法 // 或者只有方法
myHandler := func(ctx *bm.Context) { myHandler := func(ctx *bm.Context) {
// some code // some code
} }
e.UseFunc(myHandler)
e.GET("/path", myHandler) e.GET("/path", myHandler)
``` ```
# 全局中间件 # 全局中间件
在blademaster的`server.go`代码中,有以下代码: 在blademaster的`server.go`代码中,有以下代码:
@ -64,19 +66,17 @@ func DefaultServer(conf *ServerConfig) *Engine {
} }
``` ```
会默认创建一个bm engine,并注册`Recovery(), Trace(), Logger()`三个middlerware,用于全局handler处理。优先级从前到后。 会默认创建一个`bm engine`,并注册`Recovery(), Trace(), Logger()`三个middlerware用于全局handler处理,优先级从前到后。如果想要将自定义的middleware注册进全局,可以继续调用Use方法如下:
如果需要自定义默认全局执行的middleware,可以使用`NewServer`方法创建一个无middleware的engine对象。
如果想要将自定义的middleware注册进全局,可以继续调用Use方法如下:
```go ```go
engine.Use(YourMiddleware()) engine.Use(YourMiddleware())
``` ```
此方法会将`YourMiddleware`追加到已有的全局middleware后执行。 此方法会将`YourMiddleware`追加到已有的全局middleware后执行。如果需要全部自定义全局执行的middleware,可以使用`NewServer`方法创建一个无middleware的engine对象,然后使用`engine.Use/UseFunc`进行注册。
# 局部中间件 # 局部中间件
先来看一段示例(代码再pkg/net/http/blademaster/middleware/auth模块下): 先来看一段鉴权伪代码示例([auth示例代码位置](https://github.com/bilibili/kratos/tree/master/example/blademaster/middleware/auth)):
```go ```go
func Example() { func Example() {

Loading…
Cancel
Save