mirror of
https://github.com/go-kratos/kratos.git
synced 2025-02-13 13:48:51 +02:00
fix bm middleware doc (#273)
This commit is contained in:
parent
f06cafc8dd
commit
c1f9b5ca81
@ -4,7 +4,8 @@
|
||||
|
||||
# 写自己的中间件
|
||||
|
||||
middleware本质上就是一个handler,如下代码:
|
||||
middleware本质上就是一个handler,接口和方法声明如下代码:
|
||||
|
||||
```go
|
||||
// Handler responds to an HTTP request.
|
||||
type Handler interface {
|
||||
@ -21,7 +22,7 @@ func (f HandlerFunc) ServeHTTP(c *Context) {
|
||||
```
|
||||
|
||||
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)
|
||||
|
||||
// HandlerFunc使用如下:
|
||||
e.UseFunc(d.ServeHTTP)
|
||||
e.GET("/path", d.ServeHTTP)
|
||||
|
||||
// 或者只有方法
|
||||
myHandler := func(ctx *bm.Context) {
|
||||
// some code
|
||||
}
|
||||
e.UseFunc(myHandler)
|
||||
e.GET("/path", myHandler)
|
||||
```
|
||||
|
||||
|
||||
# 全局中间件
|
||||
|
||||
在blademaster的`server.go`代码中,有以下代码:
|
||||
@ -64,19 +66,17 @@ func DefaultServer(conf *ServerConfig) *Engine {
|
||||
}
|
||||
```
|
||||
|
||||
会默认创建一个bm engine,并注册`Recovery(), Trace(), Logger()`三个middlerware,用于全局handler处理。优先级从前到后。
|
||||
如果需要自定义默认全局执行的middleware,可以使用`NewServer`方法创建一个无middleware的engine对象。
|
||||
如果想要将自定义的middleware注册进全局,可以继续调用Use方法如下:
|
||||
会默认创建一个`bm engine`,并注册`Recovery(), Trace(), Logger()`三个middlerware用于全局handler处理,优先级从前到后。如果想要将自定义的middleware注册进全局,可以继续调用Use方法如下:
|
||||
|
||||
```go
|
||||
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
|
||||
func Example() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user