Micro (2)

作者: auguszou | 来源:发表于2017-10-31 17:50 被阅读0次

    Micro (2)中讲到定义服务以及服务端和客户端的实现,并没有提到如何提供API接口,Micro框架通过micro api来提供API服务,micro api是micro微服务的API网关。

    默认监听8080端口,动态独有请求到相应的后端service。内部使用了go-micro框架,我们也可以很方便把服务发现从consul切换到其他的服务发现,比如 kubernetes API 或者RPC for gRPC。
    micro api有两种形式来访问服务中的http api:

    /[service]/[method] # 通过http path来指定调用的service
    /rpc # 在http body中提供service和method来指定调用的service

    Http Handler

    micro api提供下面4种方式来定义http api:

    Endpoint Metadata

    - 默认的Handler,如果找不到匹配的路由,将使用API Handler。
    - Request/Response:  在proto中自行定义Request/Response类型
    - 注册Handler方法调用需要提供Endpoint,如下:
    
    RegisterExampleHandler(service.Server(), new(Example), api.WithEndpoint(&api.Endpoint{
            // The RPC method
            Name: "Example.Call",
            // The HTTP paths. This can be a POSIX regex
            Path: []string{"/example"},
            // The HTTP Methods for this endpoint
            Method: []string{"POST"},
            // The API handler to use
            Handler: api.Rpc,
        }))
    
    - 启动API Gateway命令, `micro api`
    

    API Handler

    - Request/Response:  Service方法定义参数类型为api.Request/api.Response, 定义proto消息时使用,需在proto文件中导入定义,`import "github.com/micro/go-api/proto/api.proto";`
    - http path用来解析service和method
    - 请求处理的API Service参数使用的类型是api.Request和api.Response
    - 请求和相应的content-type可以是任何类型
    - 如果找不到匹配的service将返回404
    - 启动API Gateway命令, `micro api --handler=api`
    

    RPC Handler

    - Request/Response:  在proto中自行定义Request/Response类型,
    - 对默认的Handler的可选处理是使用go-micro Client转发请求体作为RPC请求
    - 允许API Handler定义混用Golang的类型
    - 除了提供API Service还可以提供Backend Service
    - 支持的content-type: application/json和application/protobuf
    - 启动API Gateway命令, `micro api --handler=rpc`
    

    Reverse Proxy

    - Request/Response: http, 即使用Golang方式定义Handler方法,参数类型http.Request/http.ResponseWriter。
    - 根据http path中第一个来反向代理请求
    - 允许API以REST风格来实现
    - 启动API Gateway命令, `micro api --handler=proxy`
    

    参考官方example/api
    参考文章:
    [1] https://micro.mu/blog/2016/03/20/micro.html
    [2] https://micro.mu/blog/

    相关文章

      网友评论

        本文标题:Micro (2)

        本文链接:https://www.haomeiwen.com/subject/abjupxtx.html