pdf文档 beego开发文档-03121629

2.61 MB 248 页 0 下载 28 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.pdf
3
概览
目 录 写在前面的话 第0章 beego 简介 0.1 为beego贡献 0.2 发布版本 0.3 升级指南 第1章 安装升级 1.1 bee工具的使用 第2章 快速入门 2.1 新建项目 2.2 路由设置 2.3 Controller运行机制 2.4 Model逻辑 2.5 View编写 2.6 静态文件处理 第3章 beego的MVC架构 3.1 Model设计 3.1.1 概述 3.1.2 ORM使用 3.1.3 CRUD操作 3.1.4 高级查询 3.1.5 原生SQL查询 3.1.6 构造查询 3.1.7 事物处理 3.1.8 模型定义 3.1.9 命令模式 3.1.10 测试用例 3.1.11 自定义字段 3.1.12 FAQ 3.2 View设计 3.2.1 模板语法指南 3.2.2 模板处理 3.2.3 模板函数 3.2.4 静态文件处理 3.2.5 模板分页处理 3.3 Controller设计 3.3.1 参数配置 3.3.2 路由设置 3.3.3 控制器函数 3.3.4 XSRF过滤 - 2 - 本文档使用 看云 构建 3.3.5 请求数据处理 3.3.6 session 控制 3.3.7 过滤器 3.3.8 flash 数据 3.3.9 URL构建 3.3.10 多种格式数据输出 3.3.11 表单数据验证 3.3.12 错误处理 3.3.13 日志处理 第4章 beego的模块设计 4.1 session 模块 4.2 grace 模块 4.3 cache 模块 4.4 logs 模块 4.5 httplib 模块 4.6 context 模块 4.7 toolbox 模块 4.8 config 模块 4.9 i18n 模块 第5章 beego高级编程 5.1 进程内监控 5.2 API自动化文档 第6章 应用部署 6.1 独立部署 6.2 Supervisor部署 6.3 Nginx 部署 6.4 Apache 部署 第7章 第三方库 第8章 应用例子 8.1 在线聊天室 8.2 短域名服务 8.3 Todo列表 第9章 FAQ - 3 - 本文档使用 看云 构建 写在前面的话 该文档由TruthHun(Email:TruthHun@qq.com)整理自beego官网(http://beego.me)的官方文档,只做学习和 交流使用。 由于整理匆忙,大家在使用的过程中如发现当前开发文档有错漏,可以邮件联系或在文档下方给予评论指出,以 便及时对文档进行修正,文档地址:http://www.kancloud.cn/hello123/beego 整理时间:2016年3月12日 写在前面的话 - 4 - 本文档使用 看云 构建 第0章 beego 简介 beego 简介 beego 的架构 beego 的执行逻辑 beego 项目结构 beego 简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一 个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特 性(interface、struct 嵌入等)而设计的一个框架。 beego 的架构 beego 的整体设计架构如下所示: beego 是基于八大独立的模块构建的,是一个高度解耦的框架。当初设计 beego 的时候就是考虑功能模块化, 用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块,例如:你可以使用 cache 模块来做你的 缓存逻辑;使用日志模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。所以 beego 不仅可 以用于 HTTP 类的应用开发,在你的 socket 游戏开发中也是很有用的模块,这也是 beego 为什么受欢迎的一个 原因。大家如果玩过乐高的话,应该知道很多高级的东西都是一块一块的积木搭建出来的,而设计 beego 的时 候,这些模块就是积木,高级机器人就是 beego。至于这些模块的功能以及如何使用会在后面的文档会逐一介 绍。 beego 的执行逻辑 第0章 beego 简介 - 5 - 本文档使用 看云 构建 既然 beego 是基于这些模块构建的,那么他的执行逻辑是怎么样的呢?beego 是一个典型的 MVC 架构,他的 执行逻辑如下图所示: beego 项目结构 一般的 beego 项目的目录如下所示: ├── conf │ └── app.conf ├── controllers │ ├── admin │ └── default.go ├── main.go ├── models │ └── models.go ├── static │ ├── css │ ├── ico │ ├── img │ └── js └── views ├── admin └── index.tpl 从上面的目录结构我们可以看出来 M(models 目录)、V(views 目录)和 C(controllers 目录)的结构, main.go 是入口文件。 第0章 beego 简介 - 6 - 本文档使用 看云 构建 0.1 为beego贡献 为beego做贡献 简介 Pull Requests 为beego做贡献 简介 beego是免费、开源的软件,这意味着任何人都可以为其开发和进步贡献力量。beego源代码目前托管在Github 上,Github提供非常容易的途径fork项目和合并你的贡献。 Pull Requests pull request 的处理过程对于新特性和bug是不一样的。在你发起一个新特性的pull request之前,你应该先创建 一个带有 [Proposal] 标题的issue。这个proposal应当描述这个新特性,以及实现方法。提议将会被审查, 有可能会被采纳,也有可能会被拒绝。当一个提议被采纳,将会创建一个实现新特性的pull request。没有遵循 上述指南的pull request将会被立即关闭。 为bug创建的Pull requests不需要创建建议issue。如果你有解决bug的办法,请详细描述你的解决方案。 对文档的增加和修改也可以提交到Github上的文档源码库。 提交新特性 如果你希望beego中出现某个新特性,你可以在Github中创建一个带有[Request]标题的issue。该建议将会被核 心代码贡献者审查。 现在beego采用的gitflow的开发方式,所以现有的所有开发都是在develop分支上面,因此所有的pull request 请发到develop分支上。 0.1 为beego贡献 - 7 - 本文档使用 看云 构建 0.2 发布版本 beego 1.6.1 新增功能: 1. ORM支持Oracle驱动 2. ORM的Model支持inline 3. Cache支持ssdb引擎 4. console支持颜色输出配置 5. 添加travis的自动化集成测试 6. 日志新增mulitfile引擎,支持不同级别的输出到不同的文件 bugfix: 1. cookie时间设置 2. 路由规则里面的匹配 #1580 3. 在beego.Run()之前没有log输出 4. config获取[]string为空的时候返回为空,应该返回nil 5. ini接口保存的时候需要注释不正确 6. 异步存储日志的时候时间可能延迟的问题 7. 配置文件解析两次,导致部署key获取失败 8. 正则路由无法解析本身带有 () 的问题 9. mail发送中文附件和title乱码的问题 10. ORM里面缺少Distinct的接口定义 11. Layout编译失败 12. logrotate的时候文件名不正确 13. CORS插件失败的时候不生效 14. filters的路径参数和路由参数冲突 15. 静态文件找不到返回200,应该返回404 16. 添加GroupBy的interface支持 17. Go1.6的并发访问map引起静态文件换成崩溃 18. httplib JSONBody输出的时候采用json.Encoder会输出一个额外的换行符 19. 异步模式下,log调用flush,Close的时候日志丢失 beego 1.6.0 0.2 发布版本 - 8 - 本文档使用 看云 构建 新功能: 1. 文件log支持rotate支持类似 xx.2013-01-01.2.log 这样的输出 #1265 2. context.response 支持了原生的Flush,Hijack,CloseNotify 3. ORM支持Distinct操作 #1276 4. 新增加模板函数map_get #1305 5. ORM支持tidb引擎 #1366 6. httplib请求参数支持[]string #1308 7. ORM querySeter添加GroupBy方法 #1345 8. Session的MySQL引擎支持自定义表名 #1348 9. log的file引擎性能提升30%,同时支持自定义创建的文件权限 #1560 10. session支持通过query获取 #1507 11. Cache模块支持多个Cache对象,之前调用NewCache获取的是同一个Cache,现在会初始化不同的Cache 对象。 12. validation支持自定义验证函数 bugfix: 1. context里面bind函数如果参数为空crash #1245 2. ORM中manytomany获取reverse的时候出错。#671 3. http: multiple response.WriteHeader calls #1329 4. ParseForm解析日期使用当前的timezone #1343 5. log引擎里面Smtp发送邮件无法认证 6. 修复路由规则的一些issue: /topic/:id/?:auth , /topic/:id/?:auth:int #1349 7. 修复注释文档解析的时候nil引起crash #1367 8. static目录下的index.html无法读取#1508 9. dbBase.Update失败不返回err #1384 10. validation里面设置的Required只对int有效,int64无效 11. ORM创建外键是string类型的主键时创建varchar(0)的字符问题 #1379 12. graceful同时开启http和https的时候出错 #1414 13. ListenTCP4开启之后如果httpaddr为空还是监控TCP6 14. migration不支持postgres #1434 15. ORM text、bool等默认值问题导致创建表出错 16. graceful导致panic问题 negative WaitGroup counter 优化: 0.2 发布版本 - 9 - 本文档使用 看云 构建 1. example 移到了 samples 2. 所有代码符合golint规范 3. 重写路由树底层,性能提升三倍左右 4. 每次请求的context采用sync.Pool复用,内存和性能提升 5. 模板编译优化速度,按需编译 #1298 6. 优化了beego的配置管理,采用统一的BConfig,更易读易管理 7. 优化了beego的整体结构代码,使得代码更易读维护 8. 所有初始化的信息统一到AddAPPStartHook函数中去,易于管理 9. 移除了middleware,之后全部采用plugins来管理插件 10. 重构Error处理,使得Error更加易懂 beego 1.5.0 新功能: 1. 优雅重启模块:grace 2. httplib增加JsonBody函数,支持raw body以Json格式发送 3. context input增加 AcceptsHtml AcceptsXml AcceptsJson 函数 4. 配置文件优先从Runmode中获取 5. httplib 支持gzip 6. Log模块默认不采用异步方式 7. validation 增加循环嵌套验证 8. 增加apk mime 9. ORM支持eq和ne bugfix: 1. ledis驱动的参数错误 2. 当页面放置一段时间,验证码将从缓存中失效。当用户再来刷新验证码将出现验证码404。对于reload操作 应该直接生成验证码。 3. Controller定义Error异常 4. 修复cookie无法在window下的IE正常工作 5. GetInt函数当获取不存在的变量是返回nil错误 6. 增加更多的手机验证码方式 7. 修复路由的匹配问题 8. panic返回 http 200 9. redis session引起数据库设置错误 0.2 发布版本 - 10 - 本文档使用 看云 构建 10. https和http 直接的session无法共享 11. memcache session引擎当没有数据的时候返回错误 beego 1.4.3 新功能: 1. ORM数据库创建和修改的时候支持default设置 2. 改进日志文件行数统计 3. sesesion ledis支持选择数据库 4. session redis支持选择数据库 5. cache redis支持选择数据库 6. UrlFor支持任意类型的参数 7. controller中GetInt/GetString等Get系列函数支持默认值, 例如:GetInt("a",12) 8. 增加CompareNot/NotNil 模板函数 9. 支持Controller定义错误处理,更多请参考controller Error 10. ParseForm增加支持slices 11. 改进ORM interface,可以模拟interface bugfix: 1. context subdomain获取的子域名不正确 2. beego.AppConfig.Strings 当数据为空时判定不正确 3. utils/pagination 修复不能修改分页属性 4. 路由处理中如果请求的URL是空导致crash的问题 5. adminui 中 task 点击无法执行 6. CGI模式退出进程后Socket文件没有删除 beego 1.4.2 新功能: 1. 增加了SQL构造器,参考了ZEND框架的ORM 2. Controller获取参数增加了GetInt(), GetInt8(), GetInt16(), GetInt32(), GetInt64() 3. 优化日志提示,增加日志输出过滤设置FilterHandler,默认静态文件不输出匹配日志输出 4. 静态目录支持index.html输出,静态目录自动增加/ 5. flash支持success和set函数,支持各种一次性的数据 6. 路由支持大小写忽略设置,RouterCaseSensitive, 默认是大小写敏感的URL,根据用户注册的URL进行匹配 0.2 发布版本 - 11 - 本文档使用 看云 构建 7. 配置文件支持自定义的变量获取,beego.AppConfig.String("myvar")在dev下返回456,在其他模式下返回 123 runmode = dev myvar = 123 [dev] myvar = 456 8. ini配置文件支持include语法,在配置文件中允许include其他配置文件: appname = btest include b.conf 9. utils下增加分页组件,可以方便用户编写分页相关的应用。 10. 增加BEEGO_RUNMODE环境变量,用户在部署的时候只要通过改变量方便切换应用的不同模式 11. toolbox增加获取statistic的Json函数 12. utils下的mail发送内嵌附件发送 13. 允许用户通过标准IO开启fastcgi 14. redis Session引擎,采用SETEX命令兼容老版本的redis 15. RenderForm支持html id和class,使用id和class tag 16. ini配置文件支持BOM头 17. Session增加新的引擎ledis 18. 改进httplib文件上传,采用了io.Pipe支持超大文件上传 19. 支持应用启动直接绑定到TCP4地址上,Go默认是绑定到ipv6,增加配置参数ListenTCP4 20. 表单数据渲染支持off/on/yes/no/1/0解析到bool,支time格式的解析 21. 简化了SessionID的生成,不在采用hmac_sha1算法,直接通过golang内置的rand获取 bugfix: 1. 模拟PUT和DELETE时,_method的值没有大写,导致XSRF验证失败 2. cache如果在StartAndGC初始化失败时,没有返回错误信息 3. httplib修复User-Agent设置不起作用 4. DelStaticPath优化/处理 5. 静态目录多个的时候,文件只会在第一个静态目录找 6. Filter函数在AfterExec和FinishRouter之后多个Filter不能执行的问题 7. 修复在请求方法是模拟的_method是PUT或者DELETE的时候无法正确路由 8. 修复了mime没有初始化的问题 9. log输出文件以及行号不正确 0.2 发布版本 - 12 - 本文档使用 看云 构建 10. httplib修复了当只有一个文件上传一个参数是不能发送的问题 11. 改进了Abort的输出信息,之前如果是没有定义的错误信息不会输出 12. 修复namespace循环嵌套中,如果外层没有Filter的情况下内层Filter无法添加的问题 13. 路由包含多层参数时,路由匹配出错 #824 14. 注释路由,如果存在多个namespace的时候,一个更新,另一个信息丢失 #770 15. urlfor函数调用多余{{placeholder}}问题 #759 beego 1.4.1 主要更新: 1. context.Input.Url获取path信息,去除了域名,scheme等信息 2. 增加插件apiauth,模拟AWS的加密请求 3. 精简debug输出的路由信息 4. orm字段支持指针类型 5. 改进了httplib功能,增加了BasicAuth,多次请求缓存等功能 bugfix: 1. _method模拟请求put和delete,参数大小写不统一 2. 路由*.*和其他路由正则混用情况下无法解析 beego 1.4.0 这个版本整整憋了两个月时间,
下载文档到本地,方便使用
共 248 页, 还有 246 页可预览, 继续阅读
文档评分
请文明评论,理性发言.