开始用 Beego 写 Http 服务
一、安装
1. 框架安装
go get -u github.com/astaxie/beego
这里遇到了 git https 无法获取的问题,按照官方提示,配置本地的 git,关闭 https 验证
git config --global http.sslVerify false
2. 脚手架安装
go get -u github.com/beego/bee
这里遇到的问题是 go module 一直安装不了,解决方法是切换 go module 镜像:
go env -w GO111MODULE=on |
3. 环境变量配置
vim ~/.bash_profile |
执行 bee version
成功说明配置成功了
二、开始使用
1. 初始化项目:
初始化一个 web 项目: bee new myproject
初始化一个 api 项目: bee api apiproject
2. 运行项目
bee run
, 打开 http://localhost:8080/ 就可以看到一个界面啦
我的目的是要用来写 api 的,用的是第一种方式而不是第二种方式,因为对于初学者,第一种方式创建的项目比较好理解,而且官方的入门文档例子也是第一种方式创建的项目
3. get 输出一份 json 文档
(1) 修改端口
由于 8080 端口太经常使用了,先来把这个端口改为 7777 这个冷门端口吧
# conf/app.conf |
跑一下代码,打开 http://localhost:7777/,页面正常打开说明修改成功了
(2) controllers.MainController 改造
打开 router 文件会发现 ‘/‘ 映射到了 controllers.MainController, 也就是这个路由的逻辑在 controllers.MainController 里面,重置一下 MainController 的 Get 接口
// Get is …… |
重新跑一下程序,会发现 http://localhost:7777/ 输出了一份 json,其结构如下:
{ |
这就是我们前端经常拿到接口的数据格式了,但是我们的路由经常是 /v1/ 这样的,而不是直接用根路由,下面我们再来实现一个更复杂点的路由
4. 实现 v1/elabresource/save 接口
(1) router 改造
添加 v1/elabresource/save 路由,指明该使用 post 方法,并映射到 controllers.LabResourceController 的 SaveLabResource 函数
// routers/router |
(2) SaveLabResource 函数实现
首先,声明一个 LabResourceController 结构体
type LabResourceController struct { |
在 post 方法中,我们经常会传递一些参数供服务端使用,所以这里需要拿到参数,获取 form 类型的参数可以通过结构体直接获取,比如这样
type saveLabResourceParams struct { |
在以上结构体中,我们声明了三个键,分别是: F_name、F_cover_url、F_data,此时他们的值都还是零值。
要拿到这几个参数的值还需要用 ParseForm 方法进行解析,所以最终的逻辑是这样的:
// SaveLabResource 实验保存接口 |
到此,我们就实现了 v1/elabresource/save post 接口, postman 发送一个 post 请求到 http://127.0.0.1:7777/v1/elabresource/save ,收到一份如下 json 数据,说明成功了
{ |
但是,到这里我们还没有对数据做任何处理,只是简单的上传数据,这显然是没什么用的,正常情况下,我们会把保存的数据存到数据库,以便下次可以拿回记录,所以下一步我们要实现的就是 post 数据,服务端存储数据到 mysql 数据库,并返回相应的 id 给客户端。
5. 使用 mysql 操作数据
要操作数据库,我们使用 gorm,目前使用用户比较多, 因为项目中用到了 go module, 在 run 的时候会自动帮我们安装,这里就不安装,直接引入。
新建一个 models/labresource 文件,在里面实现相关逻辑。
首先引入相关模块
import ( |
然后初始化一下 mysql 数据库,因为需要多处用到,所以需要存到全局变量里
// models/labresource |
在以上代码中,我们对 mysql 做了一些节本配置,比如设置 DNS
初始化完数据库,当然是使用它啦
声明一个结构日 LabResource,我们接下来会用到它
// LabResource 仿验结构体 |
试着把拿到的数据存到数据库, 具体的语法自行可以查看 gorm 官方文档
// SaveLabResource …… |
调用一下这部分代码,我们就实现了 post 数据并存到 mysql 数据库的逻辑啦,完结撒花
本文标题:开始用 Beego 写 Http 服务
文章作者:Canace
发布时间:2020-11-27
最后更新:2023-05-26
原始链接:https://canace.site/beego%E4%B8%8A%E6%89%8B/
版权声明:转载请注明出处
分享