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:
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user