使用go语言框架Beego搭建安卓API服务

先在本地配置好,然后部署到服务器上。不过这里有个前提,就是服务器端和本地的环境配置都相同,这里包括数据库的用户名和密码应该相同,应该有相同的建表语句。

设置国内镜像

1
2
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/ # 可以写进 .bashrc / .zshrc
go env | grep GOPROXY

GoLand添加GO ROOT时如果报错:/usr/lib/go the selected directory is not a valid home for go sdk
$GOROOT/src/runtime/internal/sys/zversion.go文件中添加

1
const TheVersion = `go1.17.3`

具体版本以安装为准。

本地配置

GoLand中安装Swagger插件,实现在本地编写YAML格式的Swagger配置文件。

Beego框架是快速开发Go应用的HTTP框架,用来快速开发API及后端服务。Beego采用M(models)V(views)C(controllers)框架
M:定义数据,表以及结构体
V:前端展现出的界面,下载Swagger即可使用前端文件
C:处理业务逻辑,比如API中的POST,PUT,GET,DELETE等

Http请求包括:Http动作,URL,Body,Response

beego启动自动化文档命令bee run -gendoc=true -downdoc=true

为了使用golang操作数据库social_app,我们在MySQL中新建一个用户并授权

1
2
3
CREATE DATABASE social_app;
CREATE USER 'ubuntu'@'localhost' IDENTIFIED BY 'IS1501';
GRANT Alter, Alter routine, Create, Create routine, Delete, Drop, Execute, Index, Insert, References, Select, Update ON social_app.* TO 'ubuntu'@'localhost';

创建数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DROP TABLE IF EXISTS SquareNum;
CREATE TABLE SquareNum (
Number INT NOT NULL,
SquareNumber INT NOT NULL,
Comment VARCHAR(255),
PRIMARY KEY(Number)
);

DROP TABLE IF EXISTS USER;
create table USER (
USER_ID varchar(11) not null,
USER_NAME varchar(40) not null,
PASSWORD varchar(40) not null,
primary key (USER_ID)
);

服务器配置

使用腾讯云Ubuntu云服务器140.143.30.248

从Golang.org下载Linux系统的go语言安装包,上传到服务器,然后解压到/user/local/目录下。形成go的根目录:/user/local/go
然后添加go语言的环境变量,在sudo用户/etc/profile文件的最后添加
export PATH=”$PATH:/usr/local/go/bin”
export GOPATH=”/home/ubuntu/go”
export GOBIN=”$GOPATH/bin”
export PATH=”$PATH:$GOBIN”
最后source ./.profile
通过echo命令查看,然后重启

在src目录下安装beego与bee工具
go get github.com/astaxie/beego
go get github.com/beego/bee

生成API模板
bee api social-app-server

Github服务器创建git仓库

安装swagger文档
sudo apt install nodejs
bee run -gendoc=true -downdoc=true

安装MySQL:

root密码root
sudo apt install mysql-server

新建用户app_root
CREATE DATABASE social_app;
CREATE USER ‘ubuntu‘@’localhost’ IDENTIFIED BY ‘IS1501’;
GRANT Alter, Alter routine, Create, Create routine, Delete, Drop, Execute, Index, Insert, References, Select, Update ON social_app.* TO ‘ubuntu‘@’localhost’;

建立用户基本信息表
DROP TABLE IF EXISTS user;
create table USER (
USER_ID varchar(11) not null,
USER_NAME varchar(40) not null,
PASSWORD varchar(40) not null,
primary key (USER_ID)
);

一条动态的存储策略

drop table if exists MOMENT
create table MOMENT
(
moment_id bigint not null,
moment_time varchar(128) not null,
moment_tag varchar(128),
text_location varchar(1024),
image_location varchar(1024),
primary key (moment_id)
);
记着开辟新的存储路径res

1
mkdir res/

数据库中并不存储动态中的文本和图片,而是将他们作为服务器磁盘文件来存储,文件名为服务器端利用时间戳生成的id。所以数据库中只能对id,时间,标签进行搜索,而无法对文本和图片进行搜索。下面是从数据库下res文件中拷贝出来的一个图片文件,我们来进行一个测试:
test for image

参考链接

Golang 国内的镜像源:https://blog.csdn.net/weixin_43064185/article/details/123797508

Go语言map数据类型使用注意 heap-overflow

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×