1
0
mirror of https://github.com/go-kratos/kratos.git synced 2026-05-22 10:15:24 +02:00

add response header (#1119)

* add response header

Co-authored-by: chenzhihui <zhihui_chen@foxmail.com>
This commit is contained in:
longxboy
2021-06-29 15:33:18 +08:00
committed by GitHub
parent 493c11929f
commit 545ffd1084
18 changed files with 249 additions and 63 deletions
+55
View File
@@ -0,0 +1,55 @@
package main
import (
"context"
"log"
stdhttp "net/http"
"github.com/go-kratos/kratos/examples/helloworld/helloworld"
"github.com/go-kratos/kratos/v2/transport/grpc"
"github.com/go-kratos/kratos/v2/transport/http"
stdgrpc "google.golang.org/grpc"
grpcmd "google.golang.org/grpc/metadata"
)
func main() {
callHTTP()
callGRPC()
}
func callHTTP() {
conn, err := http.NewClient(
context.Background(),
http.WithEndpoint("127.0.0.1:8000"),
)
if err != nil {
panic(err)
}
client := helloworld.NewGreeterHTTPClient(conn)
ctx := context.Background()
var header stdhttp.Header
reply, err := client.SayHello(ctx, &helloworld.HelloRequest{Name: "kratos"}, http.Header(&header))
if err != nil {
log.Fatal(err)
}
log.Printf("[http] SayHello %s header: %v\n", reply.Message, header)
}
func callGRPC() {
conn, err := grpc.DialInsecure(
context.Background(),
grpc.WithEndpoint("127.0.0.1:9000"),
)
if err != nil {
log.Fatal(err)
}
client := helloworld.NewGreeterClient(conn)
ctx := context.Background()
var md grpcmd.MD
reply, err := client.SayHello(ctx, &helloworld.HelloRequest{Name: "kratos"}, stdgrpc.Header(&md))
if err != nil {
log.Fatal(err)
}
log.Printf("[grpc] SayHello %+v header: %v\n", reply, md)
}
+60
View File
@@ -0,0 +1,60 @@
package main
import (
"context"
"fmt"
"log"
"github.com/go-kratos/kratos/examples/helloworld/helloworld"
"github.com/go-kratos/kratos/v2"
"github.com/go-kratos/kratos/v2/transport"
"github.com/go-kratos/kratos/v2/transport/grpc"
"github.com/go-kratos/kratos/v2/transport/http"
)
// go build -ldflags "-X main.Version=x.y.z"
var (
// Name is the name of the compiled software.
Name = "helloworld"
// Version is the version of the compiled software.
Version = "v1.0.0"
)
// server is used to implement helloworld.GreeterServer.
type server struct {
helloworld.UnimplementedGreeterServer
}
// SayHello implements helloworld.GreeterServer
func (s *server) SayHello(ctx context.Context, in *helloworld.HelloRequest) (*helloworld.HelloReply, error) {
info, _ := kratos.FromContext(ctx)
if tr, ok := transport.FromServerContext(ctx); ok {
tr.ReplyHeader().Set("app_name", info.Name())
}
return &helloworld.HelloReply{Message: fmt.Sprintf("Hello %s", in.Name)}, nil
}
func main() {
grpcSrv := grpc.NewServer(
grpc.Address(":9000"),
)
httpSrv := http.NewServer(
http.Address(":8000"),
)
s := &server{}
helloworld.RegisterGreeterServer(grpcSrv, s)
helloworld.RegisterGreeterHTTPServer(httpSrv, s)
app := kratos.New(
kratos.Name(Name),
kratos.Server(
httpSrv,
grpcSrv,
),
)
if err := app.Run(); err != nil {
log.Fatal(err)
}
}
+2 -2
View File
@@ -34,7 +34,7 @@ func callHTTP() {
if err != nil {
log.Fatal(err)
}
log.Printf("[http] SayHello %s\n", reply.Message)
log.Printf("[http] SayHello %s\n", reply)
}
func callGRPC() {
@@ -55,5 +55,5 @@ func callGRPC() {
if err != nil {
log.Fatal(err)
}
log.Printf("[grpc] SayHello %+v\n", reply)
log.Printf("[grpc] SayHello %+v \n", reply)
}
+1 -2
View File
@@ -32,8 +32,7 @@ func (s *server) SayHello(ctx context.Context, in *helloworld.HelloRequest) (*he
if md, ok := metadata.FromServerContext(ctx); ok {
extra = md.Get("x-md-global-extra")
}
info, _ := kratos.FromContext(ctx)
return &helloworld.HelloReply{Message: fmt.Sprintf("Hello %s extra: %s name: %s", in.Name, extra, info.Name())}, nil
return &helloworld.HelloReply{Message: fmt.Sprintf("Hello %s extra_meta: %s", in.Name, extra)}, nil
}
func main() {