使用BEEGO建立一个基本的API框架
用BEE API命令生成框架。
然后自行更改MODELS,加入MYSQL支持ORM.
然后,自定义了字段的对应,表的名称等。
参考URL:
http://www.cnblogs.com/studyzy/p/6964612.html
main.go
package main import ( _ "papi/routers" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) func init() { orm.RegisterDriver("mysql", orm.DRMySQL) orm.RegisterDataBase("default", "mysql", "user:pwd@tcp(1ip2:3306)/DB?charset=utf8") orm.SetMaxIdleConns("default", 1000) orm.SetMaxOpenConns("default", 2000) } func main() { orm.Debug = true if beego.BConfig.RunMode == "dev" { beego.BConfig.WebConfig.DirectoryIndex = true beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" } beego.Run() }
conf/app.conf
appname = papi httpport = 5757 runmode = dev autorender = false copyrequestbody = true EnableDocs = true EnableAdmin = true AdminAddr = "127.0.0.1" AdminPort = 5758
models.go
package models import ( "fmt" "time" "github.com/astaxie/beego/orm" ) type pmLog struct { Id int `orm:"column(id)"` DeployName string `orm:"column(deployName)"` AppName string `orm:"column(appName)"` SiteName string `orm:"column(siteName)"` IpAddress string `orm:"column(ipAddress)"` EnvType string `orm:"column(envType)"` UserName string `orm:"column(userName)"` OperationType string `orm:"column(operationType)"` OperationNo int `orm:"column(operationNo)"` LogContent string `orm:"column(logContent)"` LogDateTime time.Time `orm:"auto_now_add;type(datetime);column(logDateTime)"` } func (u *pmLog) TableName() string { return "pmlog" } func init() { orm.RegisterModel(new(pmLog)) } func GetAllpmLog() []*pmLog { o := orm.NewOrm() o.Using("default") var pmlogs []*pmLog q := o.QueryTable("pmlog") q.All(&pmlogs) return pmlogs } func GetpmLogById(id int) pmLog { u := pmLog{Id: id} o := orm.NewOrm() o.Using("default") err := o.Read(&u) if err == orm.ErrNoRows { fmt.Println("no result") } else if err == orm.ErrMissPK { fmt.Println("can't find PK") } return u } func AddpmLog(pmlog *pmLog) int { o := orm.NewOrm() o.Using("default") o.Insert(pmlog) return pmlog.Id } func UpdatepmLog(pmlog *pmLog) { o := orm.NewOrm() o.Using("default") o.Update(pmlog) } func DeletepmLog(id int) { o := orm.NewOrm() o.Using("default") o.Delete(&pmLog{Id: id}) }
controllers.go
package controllers import ( "pmlogapi/models" "encoding/json" "github.com/astaxie/beego" ) type pmLogController struct { beego.Controller } // @Title 获取所有部署日志 // @Description 返回所有的部署日志 // @Success 200 {object} models.pmLog // @router / [get] func (u *pmLogController) GetAll() { ss := models.GetAllpmLog() u.Data["json"] = ss u.ServeJSON() } // @Title 获取一条日志 // @Description 返回某条日志 // @Param id path int true "The key for staticblock" // @Success 200 {object} models.pmLog // @router /:id [get] func (u *pmLogController) GetById() { id, _ := u.GetInt(":id") s := models.GetpmLogById(id) u.Data["json"] = s u.ServeJSON() } // @Title 创建一条日志 // @Description 创建日志的描述 // @Param body body models.pmLog true "body for content" // @Success 200 {int} models.pmLog.Id // @Failure 403 body is empty // @router / [post] func (u *pmLogController) Post() { var s models.pmLog json.Unmarshal(u.Ctx.Input.RequestBody, &s) uid := models.AddpmLog(&s) u.Data["json"] = uid u.ServeJSON() } // @Title 修改日志 // @Description 修改日志的内容 // @Param body body models.pmLog true "body for pmlog content" // @Success 200 {int} models.pmLog // @Failure 403 body is empty // @router / [put] func (u *pmLogController) Update() { var s models.pmLog json.Unmarshal(u.Ctx.Input.RequestBody, &s) models.UpdatepmLog(&s) u.Data["json"] = s u.ServeJSON() } // @Title 删除日志 // @Description 删除指定的日志 // @Param id path int true "The key for staticblock" // @Success 200 {object} models.pmLog // @router /:id [delete] func (u *pmLogController) Delete() { id, _ := u.GetInt(":id") models.DeletepmLog(id) u.Data["json"] = true u.ServeJSON() }
router.go
// @APIVersion 1.0.0 // @Title beego Test API // @Description beego has a very cool tools to autogenerate documents for your API // @Contact astaxie@gmail.com // @TermsOfServiceUrl http://beego.me/ // @License Apache 2.0 // @LicenseUrl http://www.apache.org/licenses/LICENSE-2.0.html package routers import ( "pmlogapi/controllers" "github.com/astaxie/beego" ) func init() { ns := beego.NewNamespace("/v1", beego.NSNamespace("/pmlog", beego.NSInclude( &controllers.pmLogController{}, ), ), ) beego.AddNamespace(ns) }
使用BEEGO建立一个基本的API框架的更多相关文章
- API Star:一个 Python 3 的 API 框架
为了在 Python 中快速构建 API,我主要依赖于 Flask.最近我遇到了一个名为 "API Star" 的基于 Python 3 的新 API 框架.由于几个原因,我对它很 ...
- 如何设计一个优秀的API(转载)
最近在整理框架的一些 API,觉得很有必要总结一下 API 兼容性的设计.下图是我自己当下的一些总结,慢慢维护: 网上搜索了一下,一个多月前,“标点符”已经发布了下面这篇文章,觉得写得非常不错,转载于 ...
- 如何设计一个优秀的API(转)
到目前为止,已经负责API接近两年了,这两年中发现现有的API存在的问题越来越多,但很多API一旦发布后就不再能修改了,即时升级和维护是必须的.一旦API发生变化,就可能对相关的调用者带来巨大的代价, ...
- 如何设计一个优秀的API
如何设计一个优秀的API - 文章 - 伯乐在线 http://blog.jobbole.com/42317/ 如何设计一个优秀的API - 标点符 https://www.biaodianfu.co ...
- 通过beego快速创建一个Restful风格API项目及API文档自动化
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- Java界面编程-建立一个可以画出图形的简单框架
引子:总共使用3个.java文件,建立一个简单界面编程的框架. 第1个文件:NotHelloWorldComponent.java //NotHelloWorldComponent.java 1 im ...
- 通过beego快速创建一个Restful风格API项目及API文档自动化(转)
通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...
- 0202年,您真的需要Thrift这样一个RPC微服务框架来拯救一下传统HTTP接口(api)了
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_104 目前市面上类似Django的drf框架基于json的http接口解决方案大行其道,人们也热衷于在接口不多.系统与系统交互较少 ...
- 学习ASP.NET Web API框架揭秘之“HTTP方法重写”
最近在看老A的<ASP.NET Web API 框架揭秘>,这本书对于本人现阶段来说还是比较合适的(对于调用已经较为熟悉,用其开发过项目,但未深入理解过很多内容为何可以这样“调用”).看到 ...
随机推荐
- JavaScript的变量预解析特性
JavaScript是解释型语言是毋庸置疑的,但它是不是仅在运行时自上往下一句一句地解析的呢?事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了解到,J ...
- 给深度学习入门者的Python快速教程 - 基础篇(转)
原文:https://zhuanlan.zhihu.com/p/24162430 5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5. ...
- UESTC--1730
原题链接:http://acm.uestc.edu.cn/problem.php?pid=1730 分析:线段树单点更新,区间求和. #include<iostream> #include ...
- mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)错误解决办法
我的电脑是win10,所用的是mysql5.7.14 近期在学习mysql数据库的时候,遇到了这个错误,我的密码错误了.突如其来的问题,很是蒙蔽,因为我没对数据库设置过密码.通过网上查询,可以通过进入 ...
- C++ ------ 互斥锁、原子操作的性能测试
atomic原子操作:是在新标准C++11,引入了原子操作的概念,并通过这个新的头文件提供了多种原子操作数据类型,例如,atomic_bool,atomic_int等等 测试程序 #include & ...
- tf.train.batch的偶尔乱序问题
tf.train.batch的偶尔乱序问题 觉得有用的话,欢迎一起讨论相互学习~Follow Me tf.train.batch的偶尔乱序问题 我们在通过tf.Reader读取文件后,都需要用batc ...
- Java设计模式の命令模式
意图: 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化:对请求排队或记录日志,以及支持可撤销的操作 动机: 将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来. 效果: 1).c ...
- User-Agent大全
一.基础知识篇: Http Header之User-Agent User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA.它是一个特殊字符串头 ...
- 计算1到N中各个数字出现的次数 --数位DP
题意:给定一个数n,问从1到n中,0~9这10个数字分别出现了多少次.比如366这个数,3出现了1次,6出现了2次. 题解:<剑指offer>P174:<编程之美>P132 都 ...
- 【leetcode 简单】 第五十一题 有效电话号码
给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码. 你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxx ...