Documentation
¶
Overview ¶
Package mvc 提供 MVC 控制器支持。
Package mvc 提供 MVC 控制器支持。
Package mvc 提供 MVC 控制器支持。
该模块提供控制器注册、路由组、内容协商等 Web MVC 功能。 参考 Spring MVC 的设计理念,提供完整的 MVC 架构支持。
架构设计 ¶
- Context: HTTP 请求上下文接口
- Router: 路由器接口,负责路由注册和匹配
- Controller: 控制器接口,处理 HTTP 请求
- Server: HTTP 服务器接口
- HandlerFunc: HTTP 处理函数
- MiddlewareFunc: 中间件函数类型
- WebSocketServer: WebSocket 服务器接口
- MessageHandler: 消息处理器接口
- WebSocketMiddleware: WebSocket 中间件接口
- Connection: WebSocket 连接接口
- Room: WebSocket 房间接口
核心功能 ¶
- 控制器注册: 支持自动扫描和注册控制器
- 路由组: 支持路由分组和前缀
- 内容协商: 支持 JSON、XML、HTML 等多种响应格式
- 视图渲染: 支持模板引擎渲染视图
- 拦截器: 支持请求拦截和预处理
使用方式 ¶
定义控制器:
type UserController struct {
mvc.RestController
}
// @GetMapping("/users/{id}")
func (c *UserController) GetUser(ctx *mvc.Context) {
id := ctx.Param("id")
user := c.userService.GetByID(id)
ctx.JSON(user)
}
注册路由:
router := mvc.NewRouter()
router.Group("/api").
AddController(&UserController{})
内容协商 ¶
支持根据 Accept 头自动协商响应格式:
- application/json: JSON 响应
- application/xml: XML 响应
- text/html: HTML 响应
Package mvc 提供 MVC 控制器支持。
Index ¶
- func ClearControllers()
- func GetControllers() []core.Controller
- func RegisterController(ctrl core.Controller)
- type Config
- type Connection
- type Context
- type Controller
- type HandlerFunc
- type MessageHandler
- type MiddlewareFunc
- type Room
- type Router
- type Server
- type Stats
- type WebConfig
- type WebSocketMiddleware
- type WebSocketServer
- type WebStarter
- func (s *WebStarter) AddMiddleware(middleware core.MiddlewareFunc)
- func (s *WebStarter) Configure(ctx boot.ApplicationContext) error
- func (s *WebStarter) Dependencies() []string
- func (s *WebStarter) GetCondition() condition.Condition
- func (s *WebStarter) GetRouter() core.Router
- func (s *WebStarter) Name() string
- func (s *WebStarter) SetHandler(handler http.Handler)
- func (s *WebStarter) SetMiddlewares(middlewares []core.MiddlewareFunc)
- func (s *WebStarter) SetRouter(router core.Router)
- func (s *WebStarter) SetServer(server core.Server)
- func (s *WebStarter) Start(ctx boot.ApplicationContext) error
- func (s *WebStarter) Stop(ctx boot.ApplicationContext) error
- func (s *WebStarter) Use(middleware core.MiddlewareFunc) *WebStarter
- func (s *WebStarter) WithRouter(router core.Router) *WebStarter
- func (s *WebStarter) WithServer(server core.Server) *WebStarter
- type WebStarterOption
- func WithConfig(config Config) WebStarterOption
- func WithHandler(handler http.Handler) WebStarterOption
- func WithLogger(logger log.Logger) WebStarterOption
- func WithMiddlewares(middlewares []core.MiddlewareFunc) WebStarterOption
- func WithName(name string) WebStarterOption
- func WithRouter(router core.Router) WebStarterOption
- func WithServer(server core.Server) WebStarterOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterController ¶
func RegisterController(ctrl core.Controller)
RegisterController 注册控制器到全局注册表。
控制器会在应用启动时自动被扫描并注册到路由器。 通常在 init() 函数中调用。
Types ¶
type Connection ¶
type Connection interface {
ID() string
Send(message []byte) error
Close() error
IsClosed() bool
SetAttribute(key string, value any)
GetAttribute(key string) (any, bool)
Join(roomID string) error
Leave(roomID string) error
Rooms() []string
}
Connection WebSocket 连接接口。
type MessageHandler ¶
type MessageHandler interface {
Handle(conn Connection, message []byte) error
}
MessageHandler 消息处理器接口。
type Room ¶
type Room interface {
ID() string
Broadcast(message []byte) error
Members() []Connection
}
Room WebSocket 房间接口。
type Stats ¶
type Stats struct {
TotalConnections int
ActiveConnections int
RoomsCount int
MessagesSent int64
MessagesReceived int64
BytesSent int64
BytesReceived int64
}
Stats WebSocket 服务器统计信息。
type WebSocketMiddleware ¶
type WebSocketMiddleware interface {
Handle(conn Connection) error
}
WebSocketMiddleware WebSocket 中间件接口。
type WebSocketServer ¶
type WebSocketServer interface {
Start() error
Stop(ctx context.Context) error
HandleMessage(event string, handler MessageHandler)
Use(middleware WebSocketMiddleware)
}
WebSocketServer WebSocket 服务器接口。
type WebStarter ¶
type WebStarter struct {
// contains filtered or unexported fields
}
WebStarter Web MVC 启动器
负责初始化 HTTP 服务器、注册控制器和中间件。 实现 boot.Starter 接口,在应用启动时自动执行。
func NewWebStarter ¶
func NewWebStarter(opts ...WebStarterOption) *WebStarter
NewWebStarter 创建新的 Web 启动器
func (*WebStarter) AddMiddleware ¶
func (s *WebStarter) AddMiddleware(middleware core.MiddlewareFunc)
AddMiddleware 添加中间件
func (*WebStarter) Configure ¶
func (s *WebStarter) Configure(ctx boot.ApplicationContext) error
Configure 配置阶段调用
func (*WebStarter) Dependencies ¶
func (s *WebStarter) Dependencies() []string
Dependencies 返回依赖的其他启动器名称
func (*WebStarter) GetCondition ¶
func (s *WebStarter) GetCondition() condition.Condition
GetCondition 返回启动条件
func (*WebStarter) SetHandler ¶
func (s *WebStarter) SetHandler(handler http.Handler)
SetHandler 设置自定义处理器(如安全过滤器链) 如果设置了自定义处理器,Start() 将使用它而不是默认的 router
func (*WebStarter) SetMiddlewares ¶
func (s *WebStarter) SetMiddlewares(middlewares []core.MiddlewareFunc)
SetMiddlewares 设置中间件列表
func (*WebStarter) SetRouter ¶
func (s *WebStarter) SetRouter(router core.Router)
SetRouter 设置路由器(支持扩展,可替换为 gin/hertz 等)
func (*WebStarter) SetServer ¶
func (s *WebStarter) SetServer(server core.Server)
SetServer 设置服务器(支持扩展,可替换为 gin/hertz 等)
func (*WebStarter) Start ¶
func (s *WebStarter) Start(ctx boot.ApplicationContext) error
Start 启动阶段调用
func (*WebStarter) Use ¶
func (s *WebStarter) Use(middleware core.MiddlewareFunc) *WebStarter
Use 添加中间件。
func (*WebStarter) WithRouter ¶
func (s *WebStarter) WithRouter(router core.Router) *WebStarter
WithRouter 设置路由器实现。
func (*WebStarter) WithServer ¶
func (s *WebStarter) WithServer(server core.Server) *WebStarter
WithServer 设置 HTTP 服务器实现。
type WebStarterOption ¶
type WebStarterOption func(*WebStarter)
WebStarterOption 是 WebStarter 配置选项函数。
func WithMiddlewares ¶
func WithMiddlewares(middlewares []core.MiddlewareFunc) WebStarterOption
WithMiddlewares 设置中间件列表。