使用BEEGO建立一个基本的API框架

简介: 用BEE API命令生成框架。 然后自行更改MODELS,加入MYSQL支持ORM. 然后,自定义了字段的对应,表的名称等。 参考URL: http://www.cnblogs.com/studyzy/p/6964612.

用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)
}

  

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
用 Koa 框架实现一个简单的 RESTful API
用 Koa 框架实现一个简单的 RESTful API
344 26
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
763 4
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
1165 3
|
JSON JavaScript 中间件
Koa框架下的RESTful API设计与实现
在现代 Web 开发中,构建高效、可维护的 API 是至关重要的。Koa 是一个流行的 Node.js Web 应用框架,它具有简洁、灵活和强大的特性,非常适合用于设计和实现 RESTful API。
|
缓存 API 数据库
Python哪个框架合适开发速卖通商品详情api?
在跨境电商平台速卖通的商品详情数据获取与整合中,Python 语言及其多种框架(如 Flask、Django、Tornado 和 FastAPI)提供了高效解决方案。Flask 简洁灵活,适合快速开发;Django 功能全面,适用于大型项目;Tornado 性能卓越,擅长处理高并发;FastAPI 结合类型提示和异步编程,开发体验优秀。选择合适的框架需综合考虑项目规模、性能要求和团队技术栈。
299 2
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
903 2
|
API PHP 数据库
PHP中哪个框架最适合做API?
在数字化时代,API作为软件应用间通信的桥梁至关重要。本文探讨了PHP中适合API开发的主流框架,包括Laravel、Symfony、Lumen、Slim、Yii和Phalcon,分析了它们的特点和优势,帮助开发者选择合适的框架,提高开发效率、保证接口稳定性和安全性。
841 3
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
507 4
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
755 4