Documentation
¶
Overview ¶
Package server 提供与服务端实现相关的功能
目前实现了三种类型的服务端:
- NewHTTP 构建普通的 HTTP 服务;
- NewGateway 构建微服务的网关服务;
- NewService 构建微服务;
Index ¶
Constants ¶
View Source
const DefaultConfigDir = "@.config" // 默认的配置目录地址
Variables ¶
This section is empty.
Functions ¶
func Render200 ¶ added in v0.89.0
Render200 统一 API 的返回格式
适用 [Options.OnRender]。
返回值中,状态码统一为 http.StatusOK。返回对象统一为 RenderResponse。
Types ¶
type Options ¶
type Options struct {
// 项目的配置文件管理
//
// 如果为空,则采用 [DefaultConfigDir] 作为配置文件的目录,
// 同时加载 YAML、XML、TOML 和 JSON 三种文件类型的序列化方法。
Config *config.Config
// 服务器的时区
//
// 默认值为 [time.Local]
Location *time.Location
// 缓存系统
//
// 如果为空,采用 [github.com/issue9/cache/caches/memory.New] 作为默认值。
Cache cache.Driver
// 日志系统
//
// 如果此值为空,表示不会输出任何信息。
//
// 会调用 [logs.Logs.SetLocale] 设置为 [Language] 的值。
Logs *logs.Logs
// http.Server 实例的值
HTTPServer *http.Server
// 生成唯一字符串的方法
//
// 供 [Server.UniqueID] 使用。
//
// 如果为空,将采用 [unique.NewString] 作为生成方法。
//
// NOTE: 该值的修改,可能造成项目中的唯一 ID 不再唯一。
IDGenerator func() string
// 路由选项
RoutersOptions []web.RouterOption
// 指定获取 x-request-id 内容的报头名
//
// 如果为空,则采用 [header.XRequestID] 作为默认值
RequestIDKey string
// 编码方式
//
// 如果为空,则仅支持 JSON 编码,不支持压缩方式。
Codec *web.Codec
// 默认的语言标签
//
// 在用户请求的报头中没有匹配的语言标签时,会采用此值作为该用户的本地化语言,
// 同时也用来初始化 [Server.Locale.Printer]。
//
// 框架中的日志输出时,如果该信息实现了 [web.LocaleStringer] 接口,
// 将会转换成此设置项的语言。
//
// 如果为空,即 [language.Und],则会尝试读取当前系统的本地化信息。
Language language.Tag
// 所有 [web.Problem.Type] 字段的前缀
//
// 如果该值为 [web.ProblemAboutBlank],将不输出 ID 值;其它值则作为前缀添加。
// 空值是合法的值,表示不需要添加前缀。
ProblemTypePrefix string
// OnRender 可实现对渲染结果的调整
//
// 默认为空。
//
// NOTE: 该值的修改,可能造成所有接口返回数据结构的变化。
// NOTE: 该值仅对通过 [web.Context.Render] 渲染的对象作修改。
OnRender func(status int, body any) (int, any)
// 指定对 [web.Server] 进行初始化的插件
//
// 这些插件会在 [web.Server.Serve] 运行之前被调用。
Plugins []web.Plugin
// 作为微服务时的注册中心实例
//
// NOTE: 仅在 [NewService] 和 [NewGateway] 中才会有效果。
Registry registry.Registry
// 作为微服务终端时的地址
//
// NOTE: 仅在 [NewService] 中才会有效果。
Peer selector.Peer
// 作为微服务网关时的 URL 映射关系
//
// NOTE: 仅在 [NewGateway] 中才会有效果。
Mapper map[string]web.RouterMatcher
// contains filtered or unexported fields
}
Options 初始化 web.Server 的参数
NOTE: 这些参数都有默认值,且无法在 web.Server 初始化之后进行更改。
type RenderResponse ¶ added in v0.92.0
type RenderResponse struct {
XMLName struct{} `json:"-" yaml:"-" xml:"body" cbor:"-" form:"-"`
OK bool `json:"ok" yaml:"ok" xml:"ok,attr" cbor:"ok" form:"-"` // 是否是错误代码
Status int `json:"status" yaml:"status" xml:"status,attr" cbor:"status" form:"status"` // 原始的状态码
Body any `json:"body" yaml:"body" xml:"body" cbor:"body" form:"body"`
}
RenderResponse API 统一的返回格式
func (*RenderResponse) MarshalHTML ¶ added in v0.93.1
func (r *RenderResponse) MarshalHTML() (string, any)
Directories
¶
| Path | Synopsis |
|---|---|
|
Package app 提供了简便的方式管理 web.Server 的运行
|
Package app 提供了简便的方式管理 web.Server 的运行 |
|
Package config 从配置文件加载 server.Options
|
Package config 从配置文件加载 server.Options |
|
Package registry 服务注册与发现
|
Package registry 服务注册与发现 |
|
Package servertest 为测试 web.Server 提供一些简便的功能
|
Package servertest 为测试 web.Server 提供一些简便的功能 |
Click to show internal directories.
Click to hide internal directories.