使用 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. SAS小记

    2011年8月13日 最近一直在跟着李东风的<统计软件教程>学习SAS,刚刚学完初等统计,感觉还没入门,找不到matlab编程时那种手顺的感觉.继续学习吧,加油!     最近用spss处 ...

  2. 固定执行计划-SQL PROFILE手工绑定

    固定(稳定)执行计划 你的应用的功能时快时慢,变化比较大,功能的性能能够保持一种稳定的状态,ORACLE 固定执行计划,采用以下这几种方式 oracle 9i使用 Outline oracle 10g ...

  3. Codeforces 930A. Peculiar apple-tree (dfs)

    题目: 代码: #include <bits\stdc++.h> using namespace std; ]; //b[i]表示距离1号花絮i步的花絮的个数 map <int, l ...

  4. jquery动态表格,动态添加表格行

    转载收藏于:https://www.cnblogs.com/zhangqs008/archive/2013/05/09/3618459.html 效果图:   Html:<html> &l ...

  5. 虚拟机CentOS6.8下安装JDK

    CentOS6.8下 首先下载JDK,执行命令如下: wget http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec24242 ...

  6. 【转载】Reactor模式和NIO

    当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作.他们都有一个共同的结构:1. Read request2. Decode request3. Proc ...

  7. POJ 3278 Catch That Cow【BFS】

    题意:给出n,k,其中n可以加1,可以减1,可以乘以2,问至少通过多少次变化使其变成k 可以先画出样例的部分状态空间树 可以知道搜索到的深度即为所需要的最小的变化次数 下面是学习的代码----@_@ ...

  8. 洛谷 P2633 Count on a tree 主席树

    在一棵树上,我们要求点 $(u,v)$ 之间路径的第$k$大数. 对于点 $i$  ,建立 $i$  到根节点的一棵前缀主席树. 简单容斥后不难得出结果为$sumv[u]+sumv[v]−sumv[l ...

  9. 小程序canvas生成二维码图片踩的坑

    1:生成临时图片,保证画布被加载以及渲染(即本身不可以 hidden 或是 上级元素不可以 hidden 或是 wx:if 隐藏等) == > 建议:因为 canvas 的组件层级(z-inde ...

  10. [CTSC2016]单调上升路径

    题目:UOJ#201. 题目大意:给定n个点(n是偶数)的完全图,现在要你给每条边确定一个权值(互不相等),使得最长的单调上升路径最短.现在要你输出边的权值. 一条路径被称为单调上升的,如果沿着它走时 ...