GoFrame系列:3、Windows下搭建運作環境并運作demo項目
文章目錄
- GoFrame系列:3、Windows下搭建運作環境并運作demo項目
- 1. 前言
- 2. demo項目簡單介紹
- 3. 安裝及運作demo項目
- 3.1. 在一切開始之前,你需要一個 go 開發環境設定
- 3.2. 使用`git clone`将 repo 克隆到本地檔案夾
- 3.3. 導入`document/sql/create.sql`到您的資料庫
- 3.4. 從`config.example.toml`.
- 3.5. 運作 command `go run main.go`,如果成功你會看到如下内容:
- 4. 結果展示
- 5. 最後
1. 前言
接下來我們将在Windows下安裝Sqlite3,然後将demo項目建立在Windows下并跟着教程學習架構的基本内容。
2. demo項目簡單介紹
為友善小夥伴們快速使用
GoFrame
架構建立一個基本的項目,我們這裡以簡單的開發示例,使用
GoFrame
架構來建立一個簡單的
API
服務項目,該項目實作以下幾個示例接口:
- 使用者注冊
- 使用者登入
- 使用者登出
- 登入狀态判斷
- 賬号/昵稱唯一性校驗
并包含以下中間件特性:
- 允許跨域通路
- 包含權限校驗
該示例項目的源代碼倉庫位于: https://github.com/gogf/gf-demos
由于文檔的粘貼的代碼可能會滞後于倉庫代碼,建議通過下載下傳該倉庫代碼檢視示例。後續章節主要對其中的主要代碼做介紹。
各位可以通過 開始運作 章節末尾示例的
curl
指令行方式進行測試,也可以通過
/document/postman
目錄的
postman
配置進行測試。
3. 安裝及運作demo項目
3.1. 在一切開始之前,你需要一個 go 開發環境設定
還不知道的可以看上一篇的内容
3.2. 使用 git clone
将 repo 克隆到本地檔案夾
git clone
git clone https://github.com/gogf/gf-demos
3.3. 導入 document/sql/create.sql
到您的資料庫
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
.
config.example.toml
cp config/config.example.toml config/config.toml
config.toml
如有必要,根據您的本地配置進行更新。
3.5. 運作 command go run main.go
,如果成功你會看到如下内容:
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聊天工具了: