摘要: 概述 在 Web 开发中,需要处理很多静态资源文件,如 css/js 和图片文件等。本文将介绍在 Go 语言中如何处理文件请求。 接下来,我们将介绍两种处理文件请求的方式:原始方式和 方法。 原始方式 原始方式比较简单粗暴,直接读取文件,然后返回给客户端。 上面我们创建了一个文件处理器,将它挂载到路 阅读全文
posted @ 2020-01-14 07:29 darjun 阅读(2028) 评论(0) 推荐(0) 编辑
摘要: 简介 在 "上一篇文章" 中,我们介绍了 库。 库是用于解析命令行选项的。但是 有几个缺点: 不显示支持短选项。当然上一篇文章中也提到过可以通过将两个选项共享同一个变量迂回实现,但写起来比较繁琐; 选项变量的定义比较繁琐,每个选项都需要根据类型调用对应的 或`TypeVar`函数; 默认只支持有限的 阅读全文
posted @ 2020-01-13 21:29 darjun 阅读(1014) 评论(0) 推荐(0) 编辑
摘要: 缘起 我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态。写博客是一种方式,但不是每天都有想写的,值得写的东西。 有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏差,或者细节还没有完全掌握,要去查资料,了解了之后又继续写,如此反复。 这样会导致一篇博客的耗时过长 阅读全文
posted @ 2020-01-13 21:10 darjun 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 概述 在 "上一篇文章" 中,我们介绍了 Go 模板库 。 库用于生成文本输出。在 Web 开发中,涉及到很多安全方面的问题。有些数据是用户输入的,不能直接替换到模板中,否则可能导致注入攻击。 Go 提供了 库处理这些问题。 提供了与 一样的接口。 我们通常使用 生成 HTML 输出。 由于 "上一 阅读全文
posted @ 2020-01-13 14:22 darjun 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 概述 模板引擎 是 Web 编程中必不可少的一个组件。 模板 能分离逻辑和数据,使得逻辑简洁清晰,并且模板可复用。引用第二篇文章 "《程序结构》" 一文中的图示,我们可以看到模板引擎在 Web 程序结构中的位置: 模板引擎按照功能可以划分为两种类型: 无逻辑模板引擎 :此类模板引擎只进行字符串的替换 阅读全文
posted @ 2020-01-13 14:19 darjun 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 概述 上一篇文章中,我们介绍了请求的结构与处理。本文将详细介绍如何响应客户端的请求。其实在前面几篇文章中,我们已经使用过响应的功能——通过 发送字符串给客户端。 但是这种方式仅限于发送字符串。本文我们将介绍如何定制响应的参数。 接口 如果你看了我前面几篇文章,应该对处理器和处理器函数都非常熟悉了。处 阅读全文
posted @ 2020-01-13 14:18 darjun 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 概述 前面我们学习了处理器和处理器函数,如何编写和注册处理器。本文我们将学习如何从请求中获取信息。 请求的结构 通过前面的学习,我们知道处理器函数需要符合下面的签名: 其中, 就是请求的类型。客户端传递的数据都可以通过这个结构来获取。结构 定义在包 net/http 中: 我们来看一下几个重要的字段 阅读全文
posted @ 2020-01-13 14:17 darjun 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 概述 一个典型的 Go Web 程序结构如下,摘自《Go Web 编程》: 客户端发送请求; 服务器中的多路复用器收到请求; 多路复用器根据请求的 URL 找到注册的处理器,将请求交由处理器处理; 处理器执行程序逻辑,必要时与数据库进行交互,得到处理结果; 处理器调用模板引擎将指定的模板和上一步得到 阅读全文
posted @ 2020-01-13 13:18 darjun 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 概述 计划写一个讲 Go Web 编程的系列文章。从基于 net/http 包编写 Go Web 程序开始,讲述处理器,请求,响应等基础知识。然后到框架的使用。中间会穿插一些源码的分析。最后做一个实战项目。 目前 Go 社区已经有非常多关于 Web 开发的库或框架。大而全的有 "beego" , " 阅读全文
posted @ 2020-01-13 13:16 darjun 阅读(265) 评论(0) 推荐(0) 编辑