Web之外的APIs,通常指的是非Web服务的APIs,它们用于不同系统或应用程序之间的通信和数据交换。这些APIs可能基于各种协议和技术,不局限于HTTP/HTTPS,还包括如RPC(远程过程调用)、消息队列、gRPC等。
API(应用程序编程接口)是一组定义和协议,用于构建和集成应用程序软件。Web API特指基于HTTP协议的API,而Web之外的APIs则涵盖了更广泛的通信方式。
假设我们有一个简单的gRPC服务定义文件hello.proto
:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
生成客户端和服务端代码后,服务端实现可能如下:
import grpc
from concurrent import futures
import hello_pb2
import hello_pb2_grpc
class Greeter(hello_pb2_grpc.GreeterServicer):
def SayHello(self, request, context):
return hello_pb2.HelloReply(message='Hello, %s!' % request.name)
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
hello_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
server.add_insecure_port('[::]:50051')
server.start()
server.wait_for_termination()
if __name__ == '__main__':
serve()
客户端调用可能如下:
import grpc
import hello_pb2
import hello_pb2_grpc
def run():
channel = grpc.insecure_channel('localhost:50051')
stub = hello_pb2_grpc.GreeterStub(channel)
response = stub.SayHello(hello_pb2.HelloRequest(name='World'))
print("Greeter client received: " + response.message)
if __name__ == '__main__':
run()
领取专属 10元无门槛券
手把手带您无忧上云