從 v1.9 升級到 v1.10
令人興奮的新功能 🎉
功能增強 🚀
- 優化 HTTP 啟動方式(1.10.0)
- 優化 GPRC 啟動方式(1.10.0)
- 增加控制日誌輸出到控制台的配置(1.10.0)
- Request 修改、新增方法(1.10.0)
- 隊列支持延遲調度(1.10.0)
- ORM 連接支持配置表名前綴與單數(1.10.0)
- 新增 docker-compose.yml 文件(1.10.0)
- 優化 Orm(1.10.0)
- 遷移文件中支持執行多條 SQL 語句(1.10.0)
- 文件系統新增 minio 驅動(1.10.0)
- contracts/http 增加 net/http 的 Status 映射(1.10.0)
破壞性變化 🛠
- APP_KEY 必填(1.10.0)
- 表單驗證中方法新增 ctx 參數(1.10.0)
- facades.Auth.Parse 新增 payload 返回(1.10.0)
- Orm 的部分方法新增返回值(1.10.0)
升級指南
預計升級時間:20 分鐘
更新依賴
在 go.mod 中更新依賴:
go get -u github.com/goravel/framework@v1.10.0 && go mod tidy加密解密
Version: v1.10.0
新增 facades.Crypt:
- 將
&crypt.ServiceProvider{}新增到 config/app.go 文件的providers項中;
哈希
Version: v1.10.0
新增 facades.Hash:
將
&hash.ServiceProvider{}新增到 config/app.go 文件的providers項中;新增 config/hashing.go 文件;
新增路由限流器
Version: v1.10.0
優化 HTTP 啟動方式
Version: v1.10.0
- 新增
config/http.go配置文件,詳見文件; facades.Route.Run方法不再需要傳參,默認使用http.host和http.port(你無需修改代碼,向下兼容);facades.Route.RunTLS方法不再需要傳參,默認使用http.tls.host、http.tls.port、http.tls.ssl.cert和http.tls.ssl.key,如使用,需修改代碼;- 新增
facades.Route.RunTLSWithCert方法,詳見文檔; - 將配置
app.url、app.host移到http.url、http.host;
優化 GRPC 啟動方式
Version: v1.10.0
facades.Grpc.Run 方法不再需要傳參,默認使用 grpc.host 和 grpc.port(你無需修改代碼,向下兼容);
增加控制日誌輸出到控制台的配置
Version: v1.10.0
在 config/logging.go 文件的 single、daily 通道中新增 print 配置,可以控制日誌是否輸出到控制台,詳見文件;
Request 修改、新增方法
Version: v1.10.0
Input方法由僅獲取路由參數,修改為根據以下順序獲取數據:json、form、query、route。注意:json只能獲取一維數據,否則將返回空;- 新增
Route方法替代原有Input方法; Query和Form方法的默認值修改為不必填;- 新增以下方法:
| 方法 | 操作 |
|---|---|
| Route | 獲取路由中的參數 |
| RouteInt | 獲取路由中的參數 |
| RouteInt64 | 獲取路由中的參數 |
| QueryInt | 從查詢字符串中獲取輸入 |
| QueryInt64 | 從查詢字符串中獲取輸入 |
| QueryBool | 從查詢字符串中獲取輸入 |
| InputInt | 檢索輸入值 |
| InputInt64 | 檢索輸入值 |
| InputBool | 檢索輸入值 |
| Json | 檢索 Json |
隊列支持延遲調度
Version: v1.10.0
新增 Delay 方法,詳見文檔
ORM 連接支持配置表名前綴與單復數
Version: v1.10.0
Model支持指定表名,詳見文檔;config/database.go中的connection新增鍵值:
prefix:設置表名前綴; singular:設置表名使用單數還是複數;
新增 docker-compose.yml 文件
Version: v1.10.0
你現在可以使用以下命令快速啟動服務:
docker-compose build
docker-compose up優化 Orm
Version: v1.10.0
- 新增以下方法:
| 函數 | 操作 |
|---|---|
| 第一個或 | 通過回調查詢或返回數據 |
| 第一個或新建 | 檢索或創建模型 |
| 第一個或失敗 | 未找到錯誤 |
| UpdateOrCreate | 更新或創建 |
- 之前這樣寫報錯,但現在支持:
query := facades.Orm.Query()
query = query.Where()遷移文件中支持執行多條 SQL 語句
Version: v1.10.0
之前遷移文件中僅支持執行一條 SQL 語句,現在支持多條。
文件系統新增 minio 驅動
Version: v1.10.0
新增 minio 配置,詳見文件.
contracts/http 增加 net/http 的 Status 映射
Version: v1.10.0
可以在控制器中直接使用 http.StatusOK 等狀態碼,而不需要再導入 net/http。
必須填寫 APP_KEY
Version: v1.10.0
.env 文件中的 APP_KEY 修改為必填項,可以執行命令來生成 APP_KEY: go run . artisan key:generate。
在表單請求的各個方法中新增 ctx 參數
Version: v1.10.0
在表單請求的 Rules, Messages, Attributes, PrepareForValidation 方法中,新增 ctx http.Context 參數,允許你進行更多自定義配置。
facades.Auth.Parse 新增 payload 返回
Version: v1.10.0
err := facades.Auth.Parse(ctx, token) 修改為 payload, err := facades.Auth.Parse(ctx, token),通過 payload 你可以獲得:
Guard: 當前 Guard;Key: 用戶標識;ExpireAt: 過期時間;IssuedAt: 發行時間;
Orm 的部分方法新增返回值
Version: v1.10.0
以下方法新增 *Result 返回值,以獲取受影響的行數:
res, err := query.Delete(&user)
res, err := query.Exec(fmt.Sprintf("DELETE FROM users where id = %d", user.ID))
res, err := query.ForceDelete(&User{})
res, err := query.Updates(User{Avatar: "avatar"})
// 獲取受影響行數
num := res.RowsAffected