add response header (#1119)
* add response header Co-authored-by: chenzhihui <zhihui_chen@foxmail.com>pull/1125/head
parent
493c11929f
commit
545ffd1084
@ -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) |
||||
} |
||||
} |
Loading…
Reference in new issue