使用 Beego 搭建 Restful API 项目

1 环境准备
首先你需要在你的环境安装以下软件:
  • go:编程语言运行环境
  • git:版本控制工具
  • beego:go 语言流行的开发框架
  • bee:beego 配套的快速搭建工具
  • 你喜欢的数据库:这里以 Mysql 为例
1.1 go
官网下载地址:https://golang.org/dl/
注意:安装完 go 后,一定要手动配置好 $GOPATH。bee 可执行文件默认存放在 $GOPATH/bin 里面,所以您还需要把 $GOPATH/bin 添加到您的环境变量中。​

1.2 git
官网下载地址:https://git-scm.com/downloads
1.3 beego
使用如下命令安装:
go get github.com/astaxie/beego
更多详情可参考官方文档:beego 的安装
1.4 bee
使用如下命令安装:
go get github.com/ranqiwu/bee
注:未使用官方生成工具,官方的不能使用go mod,GetAll方法未返回总条数
更多详情可参考官方文档:Bee 工具的使用
1.5 数据库
使用Mysql5.7,使用8.0时报异常
 
2 使用bee工具
bee 是 beego 框架自带配套的高效工具。
2.1 生成项目目录结构
如果你只是想搭建一个 api 服务,不带前端网页开发,可以使用如下命令:
bee api YOUR_PROJECT_NAME
就这样一个简单的命令,一个项目雏形就搭好了。
可以执行如下命令,跑起来看看。默认地址是:http://localhost:8080
bee run
如果你的8080端口被占用了,可以修改 conf/app.conf 文件调整端口号。如下所示,把端口调整到9000:
httpport = 9000
目录结构如下:
myproject
├── conf
│   └── app.conf
├── controllers
│   └── default.go
├── main.go
├── models
├── routers
│   └── router.go
├── static
│   ├── css
│   ├── img
│   └── js
├── tests
│   └── default_test.go
└── views
└── index.tpl 8 directories, 4 files
 
2.2 连接数据库生成代码
你是不是想过生成目录结构之后,需要自己手动编写 model 和 controller。这里可以负责任的告诉你:常规的 CRUD 完全不需要你手动编写一行代码。以 mysql为例,只需运行如下命令即可:
bee api MyGoApi -tables="" -driver=mysql -conn="root:12345@tcp(127.0.0.1:3306)/company?charset=utf8"
运行命令之后你的目录,就会生成 Controller、Model 和 Router 文件。更多细致的调控可参考官方文档:Bee 工具的使用 - generate 命令
 
使用go mod管理包文件,使其项目可以脱离go path路径
go mod init MyGoApi
数据库驱动器需要你事先手动获取,命令如下:
go get github.com/go-sql-driver/mysql
 
2.3 生成Swagger文档
其实文档的大部分工作不论是在示例代码还是生成代码都已经给做了(留意控制器代码上的注释),你只需要修改下相应配置即可。在 beego 1.7+ 版本,只需要在 conf/app.conf 打开如下开关:
EnableDocs = true
做完之后,使用如下的命令跑你的项目:
bee run -gendoc=true -downdoc=true
  • -gendoc=true 表示每次自动化的 build 文档
  • -downdoc=true 就会自动的下载 swagger 文档查看器
跑起来之后,默认文档路径是:http://localhost:8080/swagger/ 。如下图示:
​​

bee run时下载依赖包可能被墙,配置环境变量

使用 Beego 搭建 Restful API 项目的更多相关文章

  1. 在Ubuntu上快速搭建基于Beego的RESTful API

    最近在研究Go,打算基于Go做点Web API,于是经过初步调研,打算用Beego这个框架,然后再结合其中提供的ORM以及Swagger的集成,可以快速搭建一个RESTful API的网站. 下面是具 ...

  2. 使用CodeIgniter框架搭建RESTful API服务

    使用CodeIgniter框架搭建RESTful API服务 发表于 2014-07-12   |   分类于 翻译笔记   |   6条评论 在2011年8月的时候,我写了一篇博客<使用Cod ...

  3. 从0使用Ruby on Rails打造企业级RESTful API项目实战之我的云音乐

    本节对我们项目实现的功能和知识点做一个简单的介绍,因为是RESTful API项目,所以对于后端来说基本上没有什么UI界面可展示,那我们就在关键的点,使用客户端(Android)实现的效果图. 课程简 ...

  4. 快速创建Flask Restful API项目

    前言 Python必学的两大web框架之一Flask,俗称微框架.它只需要一个文件,几行代码就可以完成一个简单的http请求服务. 但是我们需要用flask来提供中型甚至大型web restful a ...

  5. 玩转 SpringBoot 2 快速搭建 | RESTful Api 篇

    概述 RESTful 是一种架构风格,任何符合 RESTful 风格的架构,我们都可以称之为 RESTful 架构.我们常说的 RESTful Api 是符合 RESTful 原则和约束的 HTTP ...

  6. 从 0 使用 SpringBoot MyBatis MySQL Redis Elasticsearch打造企业级 RESTful API 项目实战

    大家好!这是一门付费视频课程.新课优惠价 699 元,折合每小时 9 元左右,需要朋友的联系爱学啊客服 QQ:3469271680:我们每课程是明码标价的,因为如果售价为现在的 2 倍,然后打 5 折 ...

  7. 搭建RESTful API 之 实现WSGI服务的URL映射

    javarestfull 搭建参考 http://blog.csdn.net/hejias/article/details/47424511 问题引出:对于一个稍具规模的网站来说,实现的功能不可能通过 ...

  8. 一个用beego写的API项目

    beego-api 一个使用beego写的API 支持Api日志 支持Swagger注解文档 项目地址: https://github.com/eternity-wdd/beego-api 使用说明 ...

  9. Go实战--通过gin-gonic框架搭建restful api服务(github.com/gin-gonic/gin)

    生命不止,继续 go go go !!! 先插播一条广告,给你坚持学习golang的理由: <2017 软件开发薪酬调查:Go 和 Scala 是最赚钱的语言> 言归正传! 之前写过使用g ...

随机推荐

  1. vue组件样式添加scoped属性之后,无法被父组件修改。或者无法在本组件修改element UI样式

    在vue开发中,需要使用scoped属性避免样式的全局干扰,但是这样在父组件中是无法被修改的,不仅如此如果项目中用了UI框架比如element Ui,这个时候在本组件也无法修改样式,因为权重问题.但是 ...

  2. github上下载开源项目

    1.首先获取到设置信息 2.找到克隆的路径(本步骤不包含下载.zip的方法) 3.打开 Git Shell ->输入: cd ../../ ->输入: cd  想要安装的路径 ->输 ...

  3. Java8新特性 利用流和Lambda表达式对List集合进行处理

    Lambda表达式处理List 最近在做项目的过程中经常会接触到 lambda 表达式,随后发现它基本上可以替代所有 for 循环,包括增强for循环.也就是我认为,绝大部分的for循环都可以用 la ...

  4. python 3.x 学习笔记10 (析构函数and继承)

    1.类变量的用途:大家公用的属性,节省开销(内存) 2.析构函数 在实例释放和销毁的时候执行的,通常用于做一些收尾工作,如关闭一些数据库链接和打开的临时文件 3.私有方法两个下划线开头,声明该方法为私 ...

  5. 爬取xml数据之R

    生物信息很多时候要爬数据.最近也看了一些这些方面的. url<-"要爬取的网址" url.html<-htmlParse(url,encoding="UTF- ...

  6. eclipse01

    http://blog.csdn.net/luman1991/article/category/6354903

  7. LCD段码驱动

    假如要第3个数码关显示“8.”,则3A-3D均得为1,即Seg3和Seg4均得为1.假设模具Seg和驱动芯片Seg对应,则只需往HT1621的地址Seg3和Seg4分半发送0xF. 注意:HT1621 ...

  8. Sublimi Text3 下Emmet使用技巧

    Emmet真的好用,可以少写很多代码. 初始化文档 HTML文档需要包含一些固定的标签,比如<html>.<head>.<body>等,现在你只需要1秒钟就可以输入 ...

  9. Dropout 下(关于《Dropout: A Simple way to prevent neural networks from overfitting》)

    先上菜单: 摘要: Deep neural nets with a large number of parameters are very powerful machine learning syst ...

  10. 查看linux磁盘文件系统类型

    1.查看已经挂载了的磁盘的文件系统信息. [root@python2 ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/cl_python2-root x ...