|
7 | 7 | [](https://codecov.io/gh/grpc-ecosystem/go-grpc-middleware)
|
8 | 8 | [](LICENSE)
|
9 | 9 | [](#status)
|
10 |
| -[](https://slack.com/share/IRUQCFC23/9Tm7hxRFVKKNoajQfMOcUiIk/enQtODc4ODI4NTIyMDcxLWM5NDA0ZTE4Njg5YjRjYWZkMTI5MzQwNDY3YzBjMzE1YzdjOGM5ZjI1NDNiM2JmNzI2YjM5ODE5OTRiNTEyOWE) |
| 10 | +[](https://gophers.slack.com/archives/CNJL30P4P) |
11 | 11 |
|
12 | 12 | [gRPC Go](https://github.com/grpc/grpc-go) Middleware: interceptors, helpers, utilities.
|
13 | 13 |
|
14 | 14 | ## Middleware
|
15 | 15 |
|
16 | 16 | [gRPC Go](https://github.com/grpc/grpc-go) recently acquired support for
|
17 |
| -Interceptors, i.e. [middleware](https://medium.com/@matryer/writing-middleware-in-golang-and-how-go-makes-it-so-much-fun-4375c1246e81#.gv7tdlghs) |
| 17 | +Interceptors, i.e. [middleware](https://medium.com/@matryer/writing-middleware-in-golang-and-how-go-makes-it-so-much-fun-4375c1246e81#.gv7tdlghs) |
18 | 18 | that is executed either on the gRPC Server before the request is passed onto the user's application logic, or on the gRPC client around the user call. It is a perfect way to implement
|
19 |
| -common patterns: auth, logging, message, validation, retries or monitoring. |
| 19 | +common patterns: auth, logging, message, validation, retries, or monitoring. |
20 | 20 |
|
21 | 21 | These are generic building blocks that make it easy to build multiple microservices easily.
|
22 | 22 | The purpose of this repository is to act as a go-to point for such reusable functionality. It contains
|
@@ -49,35 +49,39 @@ myServer := grpc.NewServer(
|
49 | 49 |
|
50 | 50 | ## Interceptors
|
51 | 51 |
|
52 |
| -*Please send a PR to add new interceptors or middleware to this list* |
| 52 | +_Please send a PR to add new interceptors or middleware to this list_ |
53 | 53 |
|
54 | 54 | #### Auth
|
55 |
| - * [`grpc_auth`](auth) - a customizable (via `AuthFunc`) piece of auth middleware |
| 55 | + |
| 56 | +- [`grpc_auth`](auth) - a customizable (via `AuthFunc`) piece of auth middleware |
56 | 57 |
|
57 | 58 | #### Logging
|
58 |
| - * [`grpc_ctxtags`](tags/) - a library that adds a `Tag` map to context, with data populated from request body |
59 |
| - * [`grpc_zap`](logging/zap/) - integration of [zap](https://github.com/uber-go/zap) logging library into gRPC handlers. |
60 |
| - * [`grpc_logrus`](logging/logrus/) - integration of [logrus](https://github.com/sirupsen/logrus) logging library into gRPC handlers. |
61 |
| - * [`grpc_kit`](logging/kit/) - integration of [go-kit/log](https://github.com/go-kit/log) logging library into gRPC handlers. |
62 |
| - * [`grpc_grpc_logsettable`](logging/settable/) - a wrapper around `grpclog.LoggerV2` that allows to replace loggers in runtime (thread-safe). |
| 59 | + |
| 60 | +- [`grpc_ctxtags`](tags/) - a library that adds a `Tag` map to context, with data populated from request body |
| 61 | +- [`grpc_zap`](logging/zap/) - integration of [zap](https://github.com/uber-go/zap) logging library into gRPC handlers. |
| 62 | +- [`grpc_logrus`](logging/logrus/) - integration of [logrus](https://github.com/sirupsen/logrus) logging library into gRPC handlers. |
| 63 | +- [`grpc_kit`](logging/kit/) - integration of [go-kit/log](https://github.com/go-kit/log) logging library into gRPC handlers. |
| 64 | +- [`grpc_grpc_logsettable`](logging/settable/) - a wrapper around `grpclog.LoggerV2` that allows to replace loggers in runtime (thread-safe). |
63 | 65 |
|
64 | 66 | #### Monitoring
|
65 |
| - * [`grpc_prometheus`⚡](https://github.com/grpc-ecosystem/go-grpc-prometheus) - Prometheus client-side and server-side monitoring middleware |
66 |
| - * [`otgrpc`⚡](https://github.com/grpc-ecosystem/grpc-opentracing/tree/master/go/otgrpc) - [OpenTracing](http://opentracing.io/) client-side and server-side interceptors |
67 |
| - * [`grpc_opentracing`](tracing/opentracing) - [OpenTracing](http://opentracing.io/) client-side and server-side interceptors with support for streaming and handler-returned tags |
| 67 | + |
| 68 | +- [`grpc_prometheus`⚡](https://github.com/grpc-ecosystem/go-grpc-prometheus) - Prometheus client-side and server-side monitoring middleware |
| 69 | +- [`otgrpc`⚡](https://github.com/grpc-ecosystem/grpc-opentracing/tree/master/go/otgrpc) - [OpenTracing](http://opentracing.io/) client-side and server-side interceptors |
| 70 | +- [`grpc_opentracing`](tracing/opentracing) - [OpenTracing](http://opentracing.io/) client-side and server-side interceptors with support for streaming and handler-returned tags |
68 | 71 |
|
69 | 72 | #### Client
|
70 |
| - * [`grpc_retry`](retry/) - a generic gRPC response code retry mechanism, client-side middleware |
| 73 | + |
| 74 | +- [`grpc_retry`](retry/) - a generic gRPC response code retry mechanism, client-side middleware |
71 | 75 |
|
72 | 76 | #### Server
|
73 |
| - * [`grpc_validator`](validator/) - codegen inbound message validation from `.proto` options |
74 |
| - * [`grpc_recovery`](recovery/) - turn panics into gRPC errors |
75 |
| - * [`ratelimit`](ratelimit/) - grpc rate limiting by your own limiter |
76 | 77 |
|
| 78 | +- [`grpc_validator`](validator/) - codegen inbound message validation from `.proto` options |
| 79 | +- [`grpc_recovery`](recovery/) - turn panics into gRPC errors |
| 80 | +- [`ratelimit`](ratelimit/) - grpc rate limiting by your own limiter |
77 | 81 |
|
78 | 82 | ## Status
|
79 | 83 |
|
80 |
| -This code has been running in *production* since May 2016 as the basis of the gRPC micro services stack at [Improbable](https://improbable.io). |
| 84 | +This code has been running in _production_ since May 2016 as the basis of the gRPC microservices stack at [Improbable](https://improbable.io). |
81 | 85 |
|
82 | 86 | Additional tooling will be added, and contributions are welcome.
|
83 | 87 |
|
|
0 commit comments