1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-08-04 21:42:57 +02:00

api: add static router and improve path parser in rpc handler (#1437)

* api: add static router and improve path parser in rpc handler

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* expose metadata context key to be able to get unmodified map keys

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* server/grpc: fix jsonpb codec for protobuf msg

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* api/handler/rpc: write 204 status code when rsp is nil

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>

* api/handler/rpc: add check for nil response for non javascript

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Vasiliy Tolstov
2020-03-30 11:04:59 +03:00
committed by GitHub
parent 8282e781e4
commit 3d7d5ce6b4
12 changed files with 839 additions and 35 deletions

View File

@ -6,7 +6,7 @@ import (
"strings"
)
type metaKey struct{}
type MetadataKey struct{}
// Metadata is our way of representing request headers internally.
// They're used at the RPC level and translate back and forth
@ -41,7 +41,7 @@ func Set(ctx context.Context, k, v string) context.Context {
md = make(Metadata)
}
md[k] = v
return context.WithValue(ctx, metaKey{}, md)
return context.WithValue(ctx, MetadataKey{}, md)
}
// Get returns a single value from metadata in the context
@ -64,7 +64,7 @@ func Get(ctx context.Context, key string) (string, bool) {
// FromContext returns metadata from the given context
func FromContext(ctx context.Context) (Metadata, bool) {
md, ok := ctx.Value(metaKey{}).(Metadata)
md, ok := ctx.Value(MetadataKey{}).(Metadata)
if !ok {
return nil, ok
}
@ -80,7 +80,7 @@ func FromContext(ctx context.Context) (Metadata, bool) {
// NewContext creates a new context with the given metadata
func NewContext(ctx context.Context, md Metadata) context.Context {
return context.WithValue(ctx, metaKey{}, md)
return context.WithValue(ctx, MetadataKey{}, md)
}
// MergeContext merges metadata to existing metadata, overwriting if specified
@ -88,7 +88,7 @@ func MergeContext(ctx context.Context, patchMd Metadata, overwrite bool) context
if ctx == nil {
ctx = context.Background()
}
md, _ := ctx.Value(metaKey{}).(Metadata)
md, _ := ctx.Value(MetadataKey{}).(Metadata)
cmd := make(Metadata)
for k, v := range md {
cmd[k] = v
@ -100,5 +100,5 @@ func MergeContext(ctx context.Context, patchMd Metadata, overwrite bool) context
cmd[k] = v
}
}
return context.WithValue(ctx, metaKey{}, cmd)
return context.WithValue(ctx, MetadataKey{}, cmd)
}