分享
  1. 首页
  2. 文章

提供接口的几种常用方式(二,BeeGo)

geeker2018 · · 6104 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Beego 一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架

----官网 beego 中文

以下同样以连接mysql,提供查询接口为例。

1.下载golang

配置Go Path 和 Go Root

2.下载安装(需要安装git)

在go path下(一般是src下):

执行 go get github.com/astaxie/beego

执行 go get github.com/go-sql-driver 需要连接mysql

3. 提供Api接口

将go path下的bin添加到环境变量,因为go get 后bin文件夹会有一个bee可执行文件,我们可以使用bee工具快速的搭建框架。

3.1 运行 bee api apiproject ,生成如下文件目录:


3.1.1 conf 文件夹

app.conf

项目的配置开关,具体请查阅官方文档,实在太丰富,下面就添加api项目最常用的:

appname = apiproject //项目名称

httpport = 8080 //服务端口

runmode = dev //服务环境

autorender = false //前端交互

copyrequestbody = true //请求体复制

EnableDocs = true //生成自动化文档

3.1.2 controllers文件夹

作用:处理路由

添加一个新的文件,personInfo.go

package controllers

import (

"apiproject/models"

"encoding/json"

"github.com/astaxie/beego"

)

// Operations about Persons

type PersonController struct {

beego.Controller//继承基本的控制类

}

func (u *PersonController) Get() { //添加一个Get请求函数

uid := u.GetString(":uid")

if uid != "" {

user, err := models.GetPerson(uid) //调用下面的model中函数

if err != nil {

u.Data["json"] = err.Error()

} else {

u.Data["json"] = user

}

}

u.ServeJSON()//以Json的形式返回

}

3.1.3 models文件夹

作用:连接mysql,提供查询

添加一个新的文件,personInfo.go

package models

import (

"errors"

"strconv"

"time"

"fmt"

"github.com/astaxie/beego/orm"

_ "github.com/go-sql-driver/mysql" // import your used driver

)

var (

PersonList map[string]*Person

)

func init() {

PersonList = make(map[string]*Person)

u := Person{"1", "myself", "ID", "M", "台湾省"}

PersonList["myself"] = &u

orm.RegisterDriver("mysql", orm.DRMySQL)

//set default model

orm.RegisterDataBase("default", "mysql", "username:password@tcp(127.0.0.1:3306)/databases?charset=utf8", 30)

fmt.Printf("数据库连接成功!\n")

//orm.RegisterModel(new(Person))

orm.Debug = true

orm.RegisterModel(new(Person))

}

type Person struct {

Id string `orm:"column(id);pk"` //设置主键

Name string `orm:"column(Name)"` //设置对应的数据库的名字,否则会自动转换大写字母为小写字母,导致匹配不上

CtfTp string `orm:"column(CtfTp)"`

Gender string `orm:"column(Gender)"`

Address string `orm:"column(Address)"`

}

//models 下的文件,在controller下personInfo.go 中被调用。

func GetPerson(uId string) (s []Person, err error) {

fmt.Println("get one person info")

//var j, i int64

o := orm.NewOrm()

var users []Person

//users := make([]Person, 10)

_, err1 := o.Raw("SELECT Id,Name,CtfTp,Gender,Address FROM personinfo WHERE Name = ? ", uId).QueryRows(&users)

if err1 == nil {

// num, _ := res.RowsAffected()

//fmt.Println("mysql row affected nums: ", num, users)

//i = num

} else {

fmt.Println("err:", err1)

fmt.Println(users)

return nil, err1

}

//for j = 0; j < i; j++ {

// fmt.Printf("Element[%d] = %v,len=%v\n", j, users[j].Name, len(users[j].Name))

//}

return users, nil

}

3.1.4 routers文件夹

注册路由,设置请求方式,设置处理路由函数

修改commmentsRouter_controllers.go文件

package routers

import (

"github.com/astaxie/beego"

"github.com/astaxie/beego/context/param"

)

func init() {

beego.GlobalControllerRouter["apiproject/controllers:PersonController"] = append(beego.GlobalControllerRouter["apiproject/controllers:PersonController"],

beego.ControllerComments{

Method: "Get",

Router: `/:uid`,

AllowHTTPMethods: []string{"get"},

MethodParams: param.Make(),

Params: nil})

}

路由设置以及初始化

修改router.go文件

package routers

import (

"apiproject/controllers"

"github.com/astaxie/beego"

)

func init() {

ns := beego.NewNamespace("/v1",

beego.NSNamespace("/personInfo",

beego.NSInclude(

&controllers.PersonController{},

),

),

)

beego.AddNamespace(ns)

}

4.运行编译 bee run

5.自动化测试文档

运行 bee run -gendoc=true -downdoc=true

5.1 打开 http://localhost:8080/swagger/#


使用测试即可


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:geeker2018

查看原文:提供接口的几种常用方式(二,BeeGo)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
6104 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏