golang web框架设计6:上下文设计
2023-09-27 14:24:38 时间
golang web framework 框架系列文章:
- 7. golang web框架设计7:整合框架
- 6. golang web框架设计6:上下文设计
- 5. golang web框架设计5:配置设计
- 4. golang web框架设计4:日志设计
- 3. golang web框架设计3:controller设计
- 2. golang web框架设计2:自定义路由
- 1. golang web框架设计1:框架规划
context,翻译为上下文,为什么要设计这个结构?就是把http的请求和响应,以及参数结合在一起,便于集中处理信息,以后框架的扩展等。好多框架比如gin,都是有这个上下文结构。
context结构为
type Context struct {
ResponseWriter http.ResponseWriter
Request *http.Request
Params map[string]string
}
操作函数
func (ctx *Context) WriteString(content string) {
ctx.ResponseWriter.Write([]byte(content))
}
func (ctx *Context) Abort(status int, body string) {
ctx.ResponseWriter.WriteHeader(status)
ctx.ResponseWriter.Write([]byte(body))
}
func (ctx *Context) Redirect(status int, url string) {
ctx.ResponseWriter.Header().Set("Location", url)
ctx.ResponseWriter.WriteHeader(status)
ctx.ResponseWriter.Write([]byte("Redirecting to: " + url))
}
func (ctx *Context) NotFound(message string) {
ctx.ResponseWriter.WriteHeader(404)
ctx.ResponseWriter.Write([]byte(message))
}
func (ctx *Context) ContentType(ext string) {
if !strings.HasPrefix(ext, ".") {
ext = "." + ext
}
ctype := mime.TypeByExtension(ext)
if ctype != "" {
ctx.ResponseWriter.Header().Set("Content-Type", ctype)
}
}
完整代码:
相关文章
- 教程:Visual Studio 中的 Django Web 框架入门
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->Web版本新增新的角色授权管理界面效率更高、更规范
- RDIFramework.NET框架Web中datagrid与treegrid控件自动生成右键菜单与列标题右键菜单
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增岗位管理-Web部分
- 一名合格的Web安全工程师之成长路径
- maven工程指定web资源包,创建jsp文件
- 【Web UI自动化测试】Web UI自动化测试之框架篇(全网最全)
- 一文7个步骤教你搭建测试web测试项目实战环境,
- web自动化测试 -- 文件上传与弹框处理
- 如何通过python实现一个web自动化测试框架?
- 10款Web开发最佳的Python框架
- 转: 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- golang web框架设计5:配置设计
- golang web框架设计1:框架规划
- 超全面的JavaWeb笔记day08<Tomcat&Web应用&HTTP协议>
- chrome浏览器web打印需要了解的几个小技巧
- Koa – 更加强大的下一代 Node.js Web 框架
- Node.js 入门手册:那些最流行的 Web 开发框架
- Flutter For Web实践
- 【译】什么是 web 框架?
- FastAPI 学习之路(一)fastapi--高性能web开发框架
- 为什么 WebAssembly 框架是 Web 的未来
- Bootstrap 简介(Web前端CSS框架)