GoFrame系列:3、Windows下搭建运行环境并运行demo项目

115 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1. 前言

接下来我们将在Windows下安装Sqlite3,然后将demo项目创建在Windows下并跟着教程学习框架的基本内容。

2. demo项目简单介绍

为方便小伙伴们快速使用GoFrame框架创建一个基本的项目,我们这里以简单的开发示例,使用GoFrame框架来创建一个简单的API服务项目,该项目实现以下几个示例接口:

  1. 用户注册
  2. 用户登录
  3. 用户注销
  4. 登录状态判断
  5. 账号/昵称唯一性校验

并包含以下中间件特性:

  1. 允许跨域访问
  2. 包含权限校验

该示例项目的源代码仓库位于: github.com/gogf/gf-dem…

由于文档的粘贴的代码可能会滞后于仓库代码,建议通过下载该仓库代码查看示例。后续章节主要对其中的主要代码做介绍。

各位可以通过 开始运行 章节末尾示例的curl命令行方式进行测试,也可以通过/document/postman目录的postman配置进行测试。

3. 安装及运行demo项目

3.1. 在一切开始之前,你需要一个 go 开发环境设置

还不知道的可以看上一篇的内容:blog.csdn.net/weixin_3951…

3.2. 使用git clone将 repo 克隆到本地文件夹

git clone https://github.com/gogf/gf-demos

3.3. 导入document/sql/create.sql到您的数据库

SQlite数据库也可以说是嵌入式数据库,基本Android开发大多情况下会使用sqlite数据库,而且python一般也内置sqlite数据库,所以基本上安装了python就可以直接在Windows下使用sqlite(打开cmd输入sqlite3或者在GoLand的终端中直接运行sqlite3即可),默认打开为内存数据库,可以按照提示创建文件存储到文件中。

在这里插入图片描述

之后通过内置的.read命令读入sql文件即可(通过.help获取帮助)。

需要修改一下sql文件,默认的demo是mysql数据库的方言,sqlite识别不了:

CREATE TABLE user (
    `id` INT primary key,
    `passport` varchar(45) NOT NULL,
    `password` varchar(45) NOT NULL,
    `nickname` varchar(45) NOT NULL,
    `create_at` datetime DEFAULT NULL,
    `update_at` datetime DEFAULT NULL
);

3.4. 从config.example.toml.

cp config/config.example.toml config/config.toml

config.toml如有必要,根据您的本地配置进行更新。

3.5. 运行 command go run main.go,如果成功你会看到如下内容:

  SERVER  | DOMAIN  | ADDRESS | METHOD |        ROUTE        |                          HANDLER                          |                                                  MIDDLEWARE                                                    
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /chat               | github.com/gogf/gf-demos/app/api.(*apiChat).Index         | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /chat/index         | github.com/gogf/gf-demos/app/api.(*apiChat).Index         | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /chat/setname       | github.com/gogf/gf-demos/app/api.(*apiChat).SetName       | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /chat/websocket     | github.com/gogf/gf-demos/app/api.(*apiChat).WebSocket     | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /swagger/*          | github.com/gogf/swagger.(*Swagger).Install.func1.1        | HOOK_BEFORE_SERVE                                                                                              
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /user/checknickname | github.com/gogf/gf-demos/app/api.(*apiUser).CheckNickName | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /user/checkpassport | github.com/gogf/gf-demos/app/api.(*apiUser).CheckPassport | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /user/issignedin    | github.com/gogf/gf-demos/app/api.(*apiUser).IsSignedIn    | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /user/profile       | github.com/gogf/gf-demos/app/api.(*apiUser).Profile-fm    | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm,service.(*serviceMiddleware).Auth-fm  
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /user/signin        | github.com/gogf/gf-demos/app/api.(*apiUser).SignIn        | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /user/signout       | github.com/gogf/gf-demos/app/api.(*apiUser).SignOut       | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------
  default | default | :8199   | ALL    | /user/signup        | github.com/gogf/gf-demos/app/api.(*apiUser).SignUp        | service.(*serviceMiddleware).Ctx-fm,service.(*serviceMiddleware).CORS-fm                                       
----------|---------|---------|--------|---------------------|------------------------------------------------

运行时可能会找不到相关的模块,打开go.mod进行模块同步即可,当然,使用Go Modules的话确认一下上节我们所说的Go模块集成环境是否设置了代理,设置了的话会自动建立索引并下载依赖模块。

4. 结果展示

成功运行则如下所示:

在这里插入图片描述

然后就可以在浏览器上输入给出的ip、端口和路由地址进行测试了:

在这里插入图片描述

如果有服务器的话就可以直接部署上去就是一个简单的websocket聊天工具了:

在这里插入图片描述

5. 最后

接下来我们通过教程对demo项目的介绍来了解对应目录结构如何划分的以及各个目录结构的功能,看一下实际开发过程中我们如何利用该框架开发我们的web服务。