使用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:[email protected](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 [email protected]
// @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)
}

  

时间: 2024-08-05 19:33:23

使用BEEGO建立一个基本的API框架的相关文章

API Star:一个 Python 3 的 API 框架

为了在 Python 中快速构建 API,我主要依赖于 Flask.最近我遇到了一个名为 "API Star" 的基于 Python 3 的新 API 框架.由于几个原因,我对它很感兴趣.首先,该框架包含 Python 新特点,如类型提示和 asyncio.而且它再进一步为开发人员提供了很棒的开发体验.我们很快就会讲到这些功能,但在我们开始之前,我首先要感谢 Tom Christie,感谢他为 Django REST Framework 和 API Star 所做的所有工作. 现在说回

Qt 3D教程(一)使用Qt Widgets建立一个框架

Qt3D教程(一)使用Qt Widgets建立一个框架 Qt 3D是Qt 5.5发布时最重要的一个新模块,它很好地将3D的繁文缛节封装在底层,留给我们的是简洁的对象创建方法,它也不需要你掌握太多的着色器知识,只需要懂得一些三维和光照的基本知识就可以创建出比较美观的三维模型浏览程序了.目前虽然大家都能够使用Qt 5.5和Qt 3D了,但是我查看了一下,有关API文档和一个详尽的介绍还是空缺的,因此我认为有必要写一点教程,简要介绍一下Qt 3D的使用方法. 蒋彩阳原创文章,首发地址:http://b

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

通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界面. 一.创建数据库及数据表(MySQL) #db--jeedev -- ---------------------------- -- Table structure for `app` -- ---------------------------- DROP TABLE IF EXISTS `a

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

引子:总共使用3个.java文件,建立一个简单界面编程的框架. 第1个文件:NotHelloWorldComponent.java //NotHelloWorldComponent.java 1 import java.awt.*; 2 import java.awt.geom.*; 3 import javax.swing.*; 4 5 public class NotHelloWorldComponent extends JComponent { 6 public static final

Ogre: 建立一个简单的框架——关于场景节点

[转载请保证内容的完整性和正确性] 建立一个简单的框架——关于场景节点 如果我们要做一个类似于<跑跑卡丁车>的游戏,人物模型是需要随着卡丁车模型一起进行各种变换的(平移.旋转等),我们需要分别计算两个关联的模型的位置吗?这样能解决问题,但是太麻烦了,利用Ogre的场景节点可以很方便地解决这种问题. 添加一个新的模型 之前添加的模型都是由3DMAX等软件导出的模型,接下来我们利用Ogre生成一个Cube模型. 1 //DemoManager.cpp 2 Ogre::ManualObject* c

Ogre: 建立一个简单的框架——响应键盘事件

[转载请保证内容的完整性和正确性] 建立一个简单的框架——响应键盘事件 上一节我们在场景中添加了一个机器人,这一节我们将建立一个FrameListener类(顾名思义,这是一个侦听类),来控制模型进行移动. 创建FrameListener类 FrameListener类主要负责事件的侦听,如帧结束.键盘输入等事件.它继承自ExampleFrameListener类,如果需要的话还可以继承KeyListener(键盘事件).MouseListener(鼠标事件)和JoyStickListener(

建立一个更高级别的查询 API:正确使用Django ORM 的方式(转)

add by zhj: 本文作者是DabApps公司的技术主管,作者认为在view中直接使用Django提供的ORM查询方法是不好的,我对此并不赞同,可能作者 写这篇文章是给Django的初学者看,所以在说明方法演进时有些罗嗦,至少方法1是没有必要说的. 本文介绍了如何给QuerySet类增加方法属性.作者写本文时,Django1.7还在开发中,没有发布.在Django1.7版本中提供了这个功能, 见https://docs.djangoproject.com/en/dev/releases/1

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

最近在看老A的<ASP.NET Web API 框架揭秘>,这本书对于本人现阶段来说还是比较合适的(对于调用已经较为熟悉,用其开发过项目,但未深入理解过很多内容为何可以这样“调用”).看到第四章了,有些内容看着虽能理解,但未遇到过具体的问题,看起来也就没有豁然开朗之感.同时,有些内容是一眼就觉得“这是干货”,可能是之前遇到过某些问题,当时用一些搓办法解决,但现在看到书中的示例就如获至宝.所以,就挑些单独能拎出来且马上就能在项目中应用的内容出来与大家分享交流下吧.其中会穿插一些框架中的知识点.不

TF层的指导:建立一个卷积神经网络

官方文档: https://www.tensorflow.org/tutorials/layers: 1.概述 Tensorflow层模型提供了一个创建神经网络更加简单的高级API.提供了一些方法:这些方法促进了密度层(全连接层)和卷积层的创建,激活函数的添加,dropout正则化的应用.这篇教程中,将学习怎样使用layers建立卷积神经网络模型来识别MNIST数据集中的手写数字. MNIST数据集由60000个训练样本和10000个测试样本组成,28*28的黑白图像. 2.入门 Let's s