修订历史
- 2024.03.02 创建笔记
- 2024.03.25 完善
rpc SayHello(HelloRequest) returns (HelloResponse);
发送一个请求,得到一个响应rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);
服务器流式 rpc,其中客户端向服务器发送请求,并获得一个流来读取一系列消息。客户端从返回的流中读取,直到没有更多的消息。gRPC 保证在单个 RPC 调用中的消息是有序的rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
客户端流式 rpc,其中客户端写入一系列消息并将其发送到服务器,同样使用提供的流。一旦客户端完成了消息的写入,它就等待服务器读取消息并返回响应。同样,gRPC 保证在单个 RPC 调用中对消息进行排序// server.go type server struct { pb.UnimplementedGreeterServer } func (s server) SayHello(ctx context.Context, in *pb.HelloRequest) (pb.HelloResponse, error) { … } … s := grpc.NewServer() pb.RegisterGreeterServer(s, &server{}) err = s.Serve(lis) …
// client.go … conn, err := grpc.Dial(*addr, grpc.WithTransportCredentials(insecure.NewCredentials())) c := pb.NewGreeterClient(conn) r, err := c.SayHello(ctx, &pb.HelloRequest{Name: *name}) … ```
https://docs.github.com/zh/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps
https://www.ruanyifeng.com/blog/2016/04/cors.html
CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能。只要服务器实现了CORS接口,就可以跨源通信。
CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。
简单请求,浏览器在头信息中增加一个Origin字段。浏览器根据服务器是否返回 Access-Control-Allow-Origin 字段,判断是否得到跨域许可。
非简单请求浏览器会先发一次请求方法是 OPTIONS 的 “预检” 请求(preflight),判断返回的 Access-Control-Allow-Origin 字段是否存在。
//go:embed
指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力。简化部署