使用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 框架揭秘>,这本书对于本人现阶段来说还是比较合适的(对于调用已经较为熟悉,用其开发过项目,但未深入理解过很多内容为何可以这样“调用”).看到 ...
随机推荐
- LOJ分块⑨题汇总
从零开始的分块学习系列(感谢hzwer) 题目顺序是我建议的做题顺序 先说一句:分块的核心思想(其实本身分块就可以说是一种思想)是:均摊(或者说平衡/权衡?)复杂度,同时这种思想本身不只局限于序列分块 ...
- 手脱ASPack v2.12
1.PEID查壳提示为: ASPack 2.12 -> Alexey Solodovnikov 2.载入OD,程序入口点是一个pushad,在他的下一行就可以进行ESP定律,下硬件访问断点然后s ...
- python部分知识归纳
- 10个有关String的面试问题
下面是面试中最容易问到的有关String的问题. 1. 如何比较两个字符串?使用"=="还是equals()方法? 简单来讲,"=="测试的是两个对象的引用是否 ...
- NOIP模拟5
期望得分:100+100+100=300 实际得分:72+12+0=84 T1 [CQOI2009]中位数图 令c[i]表示前i个数中,比d大的数与比d小的数的差,那么如果c[l]=c[r],则[l ...
- [译]Quartz.Net 框架 教程(中文版)2.2.x 之第三课 更多关于Jobs和JobDetails
第三课 更多关于Jobs和JobDetails 在这二课我们已经学习到,Jobs接口非常容易实现,只有一个execute方法.我们需要再学习一些知识去理解jobs的本质,Job接口的execute方法 ...
- Date、String、Calendar相互转化
Date是在Jdk1.0出现的专门用来处理时间的类,但是由于Date在国际化方面存在限制,在Jdk1.1推出Calendar,现在Date的很多方法都已经过时,都迁移到Calendar上. 1.Dat ...
- Spring boot初始
1 创建pom.xml parent:org.springframework.boot 包含启动的依赖 添加依赖,如 spring-boot-starter-web mvn dependency:t ...
- 常用的css3新特性总结
1:CSS3阴影 box-shadow的使用和技巧总结: 基本语法是{box-shadow:[inset] x-offset y-offset blur-radius spread-radiuscol ...
- python作业Select版本FTP(第十周)
SELECT版FTP: 使用SELECT或SELECTORS模块实现并发简单版FTP 允许多用户并发上传下载文件 思路解析: 1. 使用IO多路复用的知识使用SELECTORS封装好的SELECTOR ...