server

package
v0.94.1 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2024 License: MIT Imports: 23 Imported by: 2

Documentation

Overview

Package server 提供与服务端实现相关的功能

目前实现了三种类型的服务端:

Index

Constants

View Source
const DefaultConfigDir = "@.config" // 默认的配置目录地址

Variables

This section is empty.

Functions

func NewGateway added in v0.87.0

func NewGateway(name, version string, o *Options) (web.Server, error)

NewGateway 声明微服务的网关

[Options.Mapper] 和 [Options.Peer] 不能为空。

func NewHTTP added in v0.92.0

func NewHTTP(name, version string, o *Options) (web.Server, error)

NewHTTP 新建 HTTP 服务

name, version 表示服务的名称和版本号; o 指定了一些带有默认值的参数;

func NewService added in v0.87.0

func NewService(name, version string, o *Options) (web.Server, error)

NewService 声明微服务节点

[Options.Registry] 和 [Options.Peer] 不能为空。

func Render200 added in v0.89.0

func Render200(status int, body any) (int, any)

Render200 统一 API 的返回格式

适用 [Options.OnRender]。

返回值中,状态码统一为 http.StatusOK。返回对象统一为 RenderResponse

Types

type Options

type Options struct {
	// 项目的配置文件管理
	//
	// 如果为空,则采用 [DefaultConfigDir] 作为配置文件的目录,
	// 同时加载 YAML、XML 和 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 language.Tag

	// 所有 [web.Problem.Type] 字段的前缀
	//
	// 如果该值为 [web.ProblemAboutBlank],将不输出 ID 值;其它值则作为前缀添加。
	// 空值是合法的值,表示不需要添加前缀。
	ProblemTypePrefix string

	// OnRender 可实现对渲染结果的调整
	//
	// 默认为空。
	//
	// NOTE: 该值的修改,可能造成所有接口返回数据结构的变化。
	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:"-"`
	OK      bool     `json:"ok" yaml:"ok" xml:"ok,attr" cbor:"ok"`                 // 是否是错误代码
	Status  int      `json:"status" yaml:"status" xml:"status,attr" cbor:"status"` // 原始的状态码
	Body    any      `json:"body" yaml:"body" xml:"body" cbor:"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] 提供一些简便的功能

Jump to

Keyboard shortcuts

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