From 38b083e117e9e9c2c7998861235fa331ea3abc7c Mon Sep 17 00:00:00 2001 From: astaxie Date: Tue, 9 Jul 2013 16:43:03 +0800 Subject: [PATCH] add docs about how to write api application --- docs/zh/API.md | 106 ++++++++++++++++++++++++++ docs/zh/README.md | 105 ++++++++++++------------- example/beeapi/controllers/default.go | 3 - 3 files changed, 159 insertions(+), 55 deletions(-) create mode 100644 docs/zh/API.md diff --git a/docs/zh/API.md b/docs/zh/API.md new file mode 100644 index 00000000..597235a6 --- /dev/null +++ b/docs/zh/API.md @@ -0,0 +1,106 @@ +# API应用开发入门 +Go是非常适合用来开发API应用的,而且我认为也是Go相对于其他动态语言的最大优势应用。beego在开发API应用方面提供了非常强大和快速的工具,方便用户快速的建立API应用原型,专心业务逻辑就行了。 + + +## 快速建立原型 +bee快速开发工具提供了一个API应用建立的工具,在gopath/src下的任意目录执行如下命令就可以快速的建立一个API应用: + +`bee api beeapi` + +## 应用的目录结构 +应用的目录结构如下所示: + + ``` +├── conf +│ └── app.conf +├── controllers +│ └── default.go +├── models +│ └── object.go +└── main.go +``` + +## 源码解析 + +- app.conf里面主要针对API的配置如下: + +autorender = false //API应用不需要模板渲染,所以关闭自动渲染 + +copyrequestbody = true //RESTFul应用发送信息的时候是raw body,而不是普通的form表单,所以需要额外的读取body信息 + +- main.go文件主要针对RESTFul的路由注册 + +`beego.RESTRouter("/object", &controllers.ObejctController{})` + +这个路由可以匹配如下的规则 + + + + + + + + + + + + + + + + + + + + +
URL HTTP Verb Functionality
/object POST Creating Objects
/object/objectId GET Retrieving Objects
/object/objectId PUT Updating Objects
/object GET Queries
/object/objectId DELETE Deleting Objects
+ +- ObejctController实现了对应的方法: + +``` +type ObejctController struct { + beego.Controller +} + +func (this *ObejctController) Post(){ + +} + +func (this *ObejctController) Get(){ + +} + +func (this *ObejctController) Put(){ + +} + +func (this *ObejctController) Delete(){ + +} +``` + +- models里面实现了对应操作对象的增删改取等操作 + +## 测试 + +- 添加一个对象: + + `curl -X POST -d '{"Score":1337,"PlayerName":"Sean Plott"}' http://127.0.0.1:8080/object` + + 返回一个相应的objectID:astaxie1373349756660423900 + +- 查询一个对象 + + `curl -X GET http://127.0.0.1:8080/object/astaxie1373349756660423900` + +- 查询全部的对象 + + `curl -X GET http://127.0.0.1:8080/object` + +- 更新一个对象 + + `curl -X PUT -d '{"Score":10000}'http://127.0.0.1:8080/object/astaxie1373349756660423900` + +- 删除一个对象 + + `curl -X DELETE http://127.0.0.1:8080/object/astaxie1373349756660423900` diff --git a/docs/zh/README.md b/docs/zh/README.md index b71035eb..de22b025 100644 --- a/docs/zh/README.md +++ b/docs/zh/README.md @@ -1,52 +1,53 @@ -# beego介绍 -beego是一个类似tornado的Go应用框架,采用了RESTFul的方式来实现应用框架,是一个超轻量级的框架,主要有如下的特点: - -- 支持MVC的方式,用户只需要关注逻辑,实现对应method的方法即可 -- 支持websocket,通过自定义Handler实现集成sockjs等方式实现 -- 支持自定义路由,支持各种方式的路由,正则、语意均支持,类似sinatra -- session集成,支持memory、file、redis、mysql等存储 -- 表单处理自动化解析,用户可以很方便的获取数据 -- 日志分级系统,用户可以很方便的调试和应用日志记录 -- 自定义配置文件,支持ini格式的文本配置,可以方便的在系统中调参数 -- 采用了Go内置的模板,集成实现了很多Web开发中常用的函数 - -执行过程如下所示: -![](images/beego.png) - -# beego简单例子 - - package main - - import ( - "github.com/astaxie/beego" - ) - - type MainController struct { - beego.Controller - } - - func (this *MainController) Get() { - this.Ctx.WriteString("hello world") - } - - func main() { - beego.Router("/", &MainController{}) - beego.Run() - } - - -# beego 指南 - -* [为什么设计beego](Why.md) -* [安装入门](Install.md) -* [快速入门](Quickstart.md) -* [一步一步开发应用](Tutorial.md) -* [beego案例](Application.md) -* [热升级](HotUpdate.md) - - -# API接口 - -API对于我们平时开发应用非常有用,用于查询一些开发的函数,godoc做的非常好了 - -[Go Walker](http://gowalker.org/github.com/astaxie/beego) +# beego介绍 +beego是一个类似tornado的Go应用框架,采用了RESTFul的方式来实现应用框架,是一个超轻量级的框架,主要有如下的特点: + +- 支持MVC的方式,用户只需要关注逻辑,实现对应method的方法即可 +- 支持websocket,通过自定义Handler实现集成sockjs等方式实现 +- 支持自定义路由,支持各种方式的路由,正则、语意均支持,类似sinatra +- session集成,支持memory、file、redis、mysql等存储 +- 表单处理自动化解析,用户可以很方便的获取数据 +- 日志分级系统,用户可以很方便的调试和应用日志记录 +- 自定义配置文件,支持ini格式的文本配置,可以方便的在系统中调参数 +- 采用了Go内置的模板,集成实现了很多Web开发中常用的函数 + +执行过程如下所示: +![](images/beego.png) + +# beego简单例子 + + package main + + import ( + "github.com/astaxie/beego" + ) + + type MainController struct { + beego.Controller + } + + func (this *MainController) Get() { + this.Ctx.WriteString("hello world") + } + + func main() { + beego.Router("/", &MainController{}) + beego.Run() + } + + +# beego 指南 + +* [为什么设计beego](Why.md) +* [安装入门](Install.md) +* [快速入门](Quickstart.md) +* [一步一步开发应用](Tutorial.md) +* [beego案例](Application.md) +* [热升级](HotUpdate.md) +* [API应用开发入门](API.md) + + +# API接口 + +API对于我们平时开发应用非常有用,用于查询一些开发的函数,godoc做的非常好了 + +[Go Walker](http://gowalker.org/github.com/astaxie/beego) diff --git a/example/beeapi/controllers/default.go b/example/beeapi/controllers/default.go index cf3075e5..1f6cefdb 100644 --- a/example/beeapi/controllers/default.go +++ b/example/beeapi/controllers/default.go @@ -6,9 +6,6 @@ import ( "github.com/astaxie/beego/example/beeapi/models" ) -type ResponseInfo struct { -} - type ObejctController struct { beego.Controller }