用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框架的更多相关文章

  1. API Star:一个 Python 3 的 API 框架

    为了在 Python 中快速构建 API,我主要依赖于 Flask.最近我遇到了一个名为 "API Star" 的基于 Python 3 的新 API 框架.由于几个原因,我对它很 ...

  2. 如何设计一个优秀的API(转载)

    最近在整理框架的一些 API,觉得很有必要总结一下 API 兼容性的设计.下图是我自己当下的一些总结,慢慢维护: 网上搜索了一下,一个多月前,“标点符”已经发布了下面这篇文章,觉得写得非常不错,转载于 ...

  3. 如何设计一个优秀的API(转)

    到目前为止,已经负责API接近两年了,这两年中发现现有的API存在的问题越来越多,但很多API一旦发布后就不再能修改了,即时升级和维护是必须的.一旦API发生变化,就可能对相关的调用者带来巨大的代价, ...

  4. 如何设计一个优秀的API

    如何设计一个优秀的API - 文章 - 伯乐在线 http://blog.jobbole.com/42317/ 如何设计一个优秀的API - 标点符 https://www.biaodianfu.co ...

  5. 通过beego快速创建一个Restful风格API项目及API文档自动化

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

  6. Java界面编程-建立一个可以画出图形的简单框架

    引子:总共使用3个.java文件,建立一个简单界面编程的框架. 第1个文件:NotHelloWorldComponent.java //NotHelloWorldComponent.java 1 im ...

  7. 通过beego快速创建一个Restful风格API项目及API文档自动化(转)

    通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界 ...

  8. 0202年,您真的需要Thrift这样一个RPC微服务框架来拯救一下传统HTTP接口(api)了

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_104 目前市面上类似Django的drf框架基于json的http接口解决方案大行其道,人们也热衷于在接口不多.系统与系统交互较少 ...

  9. 学习ASP.NET Web API框架揭秘之“HTTP方法重写”

    最近在看老A的<ASP.NET Web API 框架揭秘>,这本书对于本人现阶段来说还是比较合适的(对于调用已经较为熟悉,用其开发过项目,但未深入理解过很多内容为何可以这样“调用”).看到 ...

随机推荐

  1. Codeforces Round #441 Div. 2题解

    比赛的时候E调了好久...F没时间写T T A:直接走到短的路上来回走就好了 #include<iostream> #include<cstring> #include< ...

  2. 框架----Django框架(进阶篇)

    一.Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层 ...

  3. 手脱FSG 2.0 -> bart/xt

    声明: 只为纪录自己的脱壳历程,高手勿喷 1.在入口的第二行ESP定律下硬件断点然后F9运行8次(因为第9次就跑飞了) 0040955C > pushad 0040955D EB jmp //E ...

  4. 1.4 Matplotlib:绘图

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  5. DINSTINCT

    DISTINCT是对结果集进行去重,有三点需要注意. 1.在大多数情况下(两者后面所跟的字段相同时),DISTINCT跟group by是等效的,此时DISTINCT可以看作group by的一个特例 ...

  6. CSS文字溢出部分自动用"..."代替

    CSS文字溢出部分自动用"..."代替 如html部分: <h4><马尔代夫双鱼岛Olhuveli4 晚6 日自助游></h4> <p&g ...

  7. 前端PHP入门-014-参数的引用

    我们学习了变量的引用,我们来回顾一下知识: <?php $a = 10; $b = &$a; $a = 100; echo $a.'---------'.$b; ?> 而函数的参数 ...

  8. JavaScript中callee与caller,apply与call解析

    1. arguments.callee 1.1 解释 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文. 1,.2 说明 callee 属性的初始值就是正被执行的 ...

  9. Mybatis批量删除之Error code 1064, SQL state 42000;

    (一)小小的一次记载. (二):最近的项目都是使用MyBatis,批量新增自己都会写了,但是一次批量删除可把我给折腾了下,写法网上都有,但是照着做就是不行,最后问公司的人,问网友才得到答案,那就是jd ...

  10. js获取本周、上周的开始结束时间

    这两天在做一个报表体统,其中涉及到了一个根据本周,上周,本月,上月的时间来进行查询的问题,在这个我就教一下大家怎么实现,大家如果有更好的实现方法的,我也希望大家能说出来,我们交流交流. 首先呢,我写了 ...