题目来源:腾讯
答案:ORVR
API
micro api提供了以下HTTP API
/[service]/[method] # HTTP paths are dynamically mapped to services
- /rpc # Explicitly call a backend service by name and method
见下面的例子HandlerHandler是管理请求路由的HTTP处理程序。
默认Handler使用注册表中的端口元数据来确定服务路由。如果未找到所匹配的路由,它将回退到API处理程序。您可以使用go-api配置注册路由。该API有三种可配置的请求Handler。
API Handler:/[service]/[method]
请求/响应:api.Request/api.Response
该路径用于解析服务和方法请求
通过API服务处理,API服务采用请求api.Request和响应api.Response类型
请求/响应的定义可以在go-api/proto中找到
请求/响应主体的内容类型可以是任何东西
路由不可用的默认回退处理程序通过--handler=api设置
RPC Handler:/[service]/[method]
请求/响应:json/protobuf
使用go-micro客户端将请求主体转发为RPC请求的默认处理程序的替代方案
允许使用具体的Go类型定义API处理程序。
在不需要完全控制标题或请求/响应的情况下很有用
可以用来运行单层后端服务,而不是其他API服务
支持的内容类型application/json和application/protobuf
通过--handler=rpc设置
反向代理:/[service]
请求/响应:http
该请求经过反向代理到服务的路径的第一个处理
这允许REST在API后面实现
通过--handler=proxy设置
Event Handler:/[topic]/[event]
异步处理程序向消息代理发布请求作为事件
请求被格式化为[go-api/proto.Event
通过--handler=event进行设置或者,使用/rpc端口直接与任何服务通话 - 期望参数:service,method,request,可选接受address,以指定特定主机。
curl -d 'service=go.micro.srv.greeter' \-d 'method=Say.Hello' \-d 'request={"name": "Bob"}' \http://localhost:8080/rpc
在github.com/micro/examples/api中查找工作示例。
参考文章 https://www.kancloud.cn/linimbus/go-micro/529040