mirror of
https://github.com/infinite-iroha/touka.git
synced 2026-06-13 15:47:38 +08:00
docs: 补充完善文档内容
- context.md: 添加Cookie操作、日志方法、HTTP客户端、IP获取、请求体操作、响应头操作、WANF/GOB绑定等完整API文档 - advanced.md: 添加协议配置、服务器配置器、IP解析配置、请求体大小限制、条件中间件等高级特性文档 - routing.md: 添加HandleFunc多方法注册、NoRoute自定义404、静态文件路由等内容
This commit is contained in:
parent
8af515059a
commit
7b8c0d7dcb
3 changed files with 654 additions and 8 deletions
|
|
@ -17,6 +17,9 @@ r.OPTIONS("/someOptions", handle)
|
|||
|
||||
// 注册所有上述方法的路由
|
||||
r.ANY("/any", handle)
|
||||
|
||||
// 同时注册多个方法
|
||||
r.HandleFunc([]string{"GET", "POST"}, "/multi", handle)
|
||||
```
|
||||
|
||||
## 路径参数 (Named Parameters)
|
||||
|
|
@ -92,3 +95,59 @@ for _, route := range routes {
|
|||
fmt.Printf("Method: %s, Path: %s\n", route.Method, route.Path)
|
||||
}
|
||||
```
|
||||
|
||||
## 自定义 404 处理
|
||||
|
||||
当请求没有匹配到任何路由时,Touka 会返回 404。您可以自定义 404 的处理逻辑:
|
||||
|
||||
```go
|
||||
// 使用单个处理器
|
||||
r.NoRoute(func(c *touka.Context) {
|
||||
c.JSON(http.StatusNotFound, touka.H{
|
||||
"error": "资源未找到",
|
||||
"path": c.Request.URL.Path,
|
||||
})
|
||||
})
|
||||
|
||||
// 使用处理器链
|
||||
r.NoRoutes(
|
||||
LogNotFoundMiddleware(),
|
||||
func(c *touka.Context) {
|
||||
c.JSON(http.StatusNotFound, touka.H{"error": "Not found"})
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
**注意**:`NoRoute` 和 `NoRoutes` 不是处理链的终点,您仍然可以在其中调用 `c.Next()` 来继续执行默认的 404 处理。
|
||||
|
||||
## 静态文件路由
|
||||
|
||||
Touka 提供了便捷的方法来注册静态文件路由:
|
||||
|
||||
```go
|
||||
// 服务整个目录
|
||||
r.StaticDir("/assets", "./static")
|
||||
// 访问 /assets/js/main.js 将返回 ./static/js/main.js
|
||||
|
||||
// 服务单个文件
|
||||
r.StaticFile("/favicon.ico", "./resources/favicon.ico")
|
||||
|
||||
// 服务嵌入式文件系统
|
||||
//go:embed dist/*
|
||||
var content embed.FS
|
||||
|
||||
func main() {
|
||||
r := touka.Default()
|
||||
fsroot, _ := fs.Sub(content, "dist")
|
||||
r.StaticFS("/", http.FS(fsroot))
|
||||
r.Run(":8080")
|
||||
}
|
||||
```
|
||||
|
||||
这些方法同样可以在路由组中使用:
|
||||
|
||||
```go
|
||||
api := r.Group("/api")
|
||||
api.StaticDir("/files", "./uploads")
|
||||
api.StaticFile("/logo", "./assets/logo.png")
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue