使用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 框架揭秘>,这本书对于本人现阶段来说还是比较合适的(对于调用已经较为熟悉,用其开发过项目,但未深入理解过很多内容为何可以这样“调用”).看到 ...
随机推荐
- bzoj3306: 树(dfs序+倍增+线段树)
比较傻逼的一道题... 显然求子树最小值就是求出dfs序用线段树维护嘛 换根的时候树的形态不会改变,所以我们可以根据相对于根的位置分类讨论. 如果询问的x是根就直接输出整棵树的最小值. 如果询问的x是 ...
- bzoj4165: 矩阵(堆+hash)
求第k大用堆维护最值并出堆的时候扩展的经典题... 因为只有正数,所以一个矩阵的权值肯定比它的任意子矩阵的权值大,那么一开始把所有满足条件的最小矩阵加进堆里,弹出的时候上下左右扩展一行加进堆,用has ...
- 前端解放生产力之–动画(Adobe Effects + bodymovin + lottie)
大概很久很久以前,2017年,参加了第二届中国前端开发者大会(FDCon2017),除了看了一眼尤雨溪,印象最深刻的就是手淘渚薰分享的关于H5交互的内容了.时光荏苒,最近再次接触,简单回顾一下. 示例 ...
- Codeforces 937.D Sleepy Game
D. Sleepy Game time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- 洛谷P2002 消息扩散
题目背景 本场比赛第一题,给个简单的吧,这 100 分先拿着. 题目描述 有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问至少需要在几个城市发布消息才能让这所有n ...
- 手脱ASPack v2.12
1.PEID查壳提示为: ASPack 2.12 -> Alexey Solodovnikov 2.载入OD,程序入口点是一个pushad,在他的下一行就可以进行ESP定律,下硬件访问断点然后s ...
- sql命令创建数据库
mysql create database 指定utf-8编码 CREATE DATABASE IF NOT EXISTS thinkphp DEFAULT CHARSET utf8 COLLATE ...
- REST式的web服务
“REST”是罗伊·菲尔丁(Roy Fielding)在他的博士论文中创造的缩写.菲尔丁论文的第5章勾画出了被称为REST风格或REST式的Web服务的知道原则.他是HTTP1.1规范的主要作者和Ap ...
- [DeeplearningAI笔记]卷积神经网络4.11一维和三维卷积
4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.11一维和三维卷积 二维和一维卷积 对于2D卷积来说,假设原始图像为\(14*14*3\)的三通 ...
- Linux高级编程--04.GDB调试程序(入门概述)
GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试 ...