http

package
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 2, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package http provides HTTP RPC client for gorp framework. This file implements the RPCClient contract with HTTP transport, service discovery, metadata propagation, tracing, circuit breaker and retry.

本包提供 HTTP RPC 客户端,用于 gorp 框架。 本文件实现带 HTTP 传输的 RPCClient 契约, 包含服务发现、元数据传播、追踪、熔断器和重试。

Package http provides HTTP RPC client and server provider for gorp framework. Implements RPCClient and RPCServer contracts with HTTP transport. Includes service discovery, metadata propagation, tracing, circuit breaker.

本包提供 HTTP RPC 客户端和服务端 provider,用于 gorp 框架。 实现带 HTTP 传输的 RPCClient 和 RPCServer 契约。 包含服务发现、元数据传播、追踪、熔断器。

Package http provides HTTP RPC server for gorp framework. This file implements the RPCServer contract with HTTP transport, registering RPC handlers as HTTP POST routes.

本包提供 HTTP RPC 服务端,用于 gorp 框架。 本文件实现带 HTTP 传输的 RPCServer 契约, 将 RPC handler 注册为 HTTP POST 路由。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client implements transportcontract.RPCClient using HTTP. It manages HTTP connections, service discovery, metadata propagation, tracing, service authentication, circuit breaker and retry.

Client 使用 HTTP 实现 transportcontract.RPCClient。 管理 HTTP 连接、服务发现、元数据传播、追踪、服务认证、熔断器和重试。

func NewClient

NewClient creates a new HTTP Client instance with full governance capabilities. Timeout is configured from RPCConfig.TimeoutMS with 30s default.

NewClient 创建具备完整治理能力的新 HTTP Client 实例。 超时时间从 RPCConfig.TimeoutMS 配置,默认 30 秒。

func (*Client) Call

func (c *Client) Call(ctx context.Context, service, method string, req, resp any) error

Call invokes an HTTP RPC method on the specified service with governance middleware chain. Implements transportcontract.RPCClient.Call. Marshals request to JSON, resolves target address, applies metadata/tracing/auth headers, executes request with timeout/retry/circuit-breaker middleware, and unmarshals response.

Call 在指定服务上调用 HTTP RPC 方法,应用治理中间件链。 实现 transportcontract.RPCClient.Call。 将请求序列化为 JSON、解析目标地址、应用 metadata/tracing/auth 头、 执行带 timeout/retry/circuit-breaker 中间件的请求、反序列化响应。

func (*Client) CallRaw

func (c *Client) CallRaw(ctx context.Context, service, method string, data []byte) ([]byte, error)

CallRaw invokes an HTTP RPC method with raw bytes payload. Implements transportcontract.RPCClient.CallRaw. Uses application/octet-stream content type and returns raw response bytes.

CallRaw 使用原始字节负载调用 HTTP RPC 方法。 实现 transportcontract.RPCClient.CallRaw。 使用 application/octet-stream 内容类型并返回原始响应字节。

func (*Client) Close

func (c *Client) Close() error

Close closes idle HTTP connections. Implements transportcontract.RPCClient.Close.

Close 关闭空闲 HTTP 连接。 实现 transportcontract.RPCClient.Close。

type Provider

type Provider struct{}

Provider registers HTTP RPC client/server services. Core logic: Create Client with governance, create Server for RPC over HTTP, bind to container.

Provider 注册 HTTP RPC 客户端/服务端服务。 核心逻辑:创建带治理的 Client、创建用于 HTTP 上 RPC 的 Server、绑定到容器。

func NewProvider

func NewProvider() *Provider

NewProvider creates a new HTTP RPC provider.

NewProvider 创建新的 HTTP RPC provider。

func (*Provider) Boot

Boot initializes the HTTP RPC provider. No additional startup logic required.

Boot 初始化 HTTP RPC provider。 无需额外启动逻辑。

func (*Provider) DependsOn

func (p *Provider) DependsOn() []string

DependsOn returns the keys this provider depends on. HTTP RPC depends on Config, Discovery, and Tracer.

DependsOn 返回该 provider 依赖的 key。 HTTP RPC 依赖 Config、Discovery 和 Tracer。

func (*Provider) IsDefer

func (p *Provider) IsDefer() bool

IsDefer indicates HTTP RPC should defer loading. RPC can be loaded after core providers.

IsDefer 表示 HTTP RPC 应延迟加载。 RPC 可以在核心 provider 之后加载。

func (*Provider) Name

func (p *Provider) Name() string

Name returns provider name for identification.

Name 返回 provider 名称,用于标识。

func (*Provider) Provides

func (p *Provider) Provides() []string

Provides returns the capability keys this provider exposes. Exposes RPCClientKey, RPCServerKey for HTTP RPC.

Provides 返回 provider 暴露的能力键。 暴露 RPCClientKey、RPCServerKey 用于 HTTP RPC。

func (*Provider) Register

func (p *Provider) Register(c runtimecontract.Container) error

Register binds HTTP RPC client/server factories to the container. Core logic: Create client with discovery/governance, create server, bind to container.

Register 将 HTTP RPC 客户端/服务端工厂绑定到容器。 核心逻辑:创建带发现/治理的 client、创建 server、绑定到容器。

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server implements transportcontract.RPCServer using HTTP. It registers RPC handlers as HTTP POST routes on the existing HTTP server. Does not create its own HTTP server, delegates to HTTPKey binding.

Server 使用 HTTP 实现 transportcontract.RPCServer。 在现有 HTTP 服务器上将 RPC handler 注册为 HTTP POST 路由。 不创建自己的 HTTP 服务器,委托给 HTTPKey binding。

func NewServer

NewServer creates a new HTTP Server instance with container for HTTP router access.

NewServer 创建新的 HTTP Server 实例,使用容器访问 HTTP router。

func (*Server) Addr

func (s *Server) Addr() string

Addr returns the server's address from config or default ":8080". Implements transportcontract.RPCServer.Addr.

Addr 从配置返回服务器地址或默认 ":8080"。 实现 transportcontract.RPCServer.Addr。

func (*Server) Register

func (s *Server) Register(service string, handler any) error

Register stores a service handler for later registration as HTTP route. Implements transportcontract.RPCServer.Register. Handler must implement transportcontract.Handler.

Register 存储服务 handler,供后续注册为 HTTP 路由。 实现 transportcontract.RPCServer.Register。 Handler 必须实现 transportcontract.Handler。

func (*Server) Start

func (s *Server) Start(ctx context.Context) error

Start registers all stored RPC handlers as HTTP POST routes on the HTTP server. Implements transportcontract.RPCServer.Start. Retrieves HTTP server from container and registers routes under "/rpc/{service}". Does not start the HTTP server itself (delegated to HTTP provider).

Start 将所有存储的 RPC handler 注册为 HTTP POST 路由。 实现 transportcontract.RPCServer.Start。 从容器获取 HTTP server,在 "/rpc/{service}" 下注册路由。 不启动 HTTP server 本身(委托给 HTTP provider)。

func (*Server) Stop

func (s *Server) Stop(ctx context.Context) error

Stop is a no-op for HTTP RPC server. Implements transportcontract.RPCServer.Stop. HTTP server lifecycle is managed by HTTP provider.

Stop 对 HTTP RPC server 是空操作。 实现 transportcontract.RPCServer.Stop。 HTTP server 生命周期由 HTTP provider 管理。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL