跳轉到內容

從 v1.9 升級到 v1.10

令人興奮的新功能 🎉

功能增強 🚀

破壞性變化 🛠

升級指南

預計升級時間:20 分鐘

更新依賴

go.mod 中更新依賴:

go get -u github.com/goravel/framework@v1.10.0 && go mod tidy

加密解密

Version: v1.10.0

新增 facades.Crypt

  1. &crypt.ServiceProvider{} 新增到 config/app.go 文件的 providers 項中;

查看文檔

哈希

Version: v1.10.0

新增 facades.Hash

  1. &hash.ServiceProvider{} 新增到 config/app.go 文件的 providers 項中;

  2. 新增 config/hashing.go 文件;

查看文檔

新增路由限流器

Version: v1.10.0

查看文檔

優化 HTTP 啟動方式

Version: v1.10.0

  1. 新增 config/http.go 配置文件,詳見文件
  2. facades.Route.Run 方法不再需要傳參,默認使用 http.hosthttp.port(你無需修改代碼,向下兼容);
  3. facades.Route.RunTLS 方法不再需要傳參,默認使用 http.tls.hosthttp.tls.porthttp.tls.ssl.certhttp.tls.ssl.key,如使用,需修改代碼;
  4. 新增 facades.Route.RunTLSWithCert 方法,詳見文檔
  5. 將配置 app.urlapp.host 移到 http.urlhttp.host

優化 GRPC 啟動方式

Version: v1.10.0

facades.Grpc.Run 方法不再需要傳參,默認使用 grpc.hostgrpc.port(你無需修改代碼,向下兼容);

增加控制日誌輸出到控制台的配置

Version: v1.10.0

config/logging.go 文件的 singledaily 通道中新增 print 配置,可以控制日誌是否輸出到控制台,詳見文件

Request 修改、新增方法

Version: v1.10.0

  1. Input 方法由僅獲取路由參數,修改為根據以下順序獲取數據:jsonformqueryroute。注意:json 只能獲取一維數據,否則將返回空;
  2. 新增 Route 方法替代原有 Input 方法;
  3. QueryForm 方法的默認值修改為不必填;
  4. 新增以下方法:
方法操作
Route獲取路由中的參數
RouteInt獲取路由中的參數
RouteInt64獲取路由中的參數
QueryInt從查詢字符串中獲取輸入
QueryInt64從查詢字符串中獲取輸入
QueryBool從查詢字符串中獲取輸入
InputInt檢索輸入值
InputInt64檢索輸入值
InputBool檢索輸入值
Json檢索 Json

隊列支持延遲調度

Version: v1.10.0

新增 Delay 方法,詳見文檔

ORM 連接支持配置表名前綴與單復數

Version: v1.10.0

  1. Model 支持指定表名,詳見文檔
  2. config/database.go 中的 connection 新增鍵值:

prefix:設置表名前綴; singular:設置表名使用單數還是複數;

詳見文件

新增 docker-compose.yml 文件

Version: v1.10.0

你現在可以使用以下命令快速啟動服務:

docker-compose build
docker-compose up

優化 Orm

Version: v1.10.0

  1. 新增以下方法:
函數操作
第一個或通過回調查詢或返回數據
第一個或新建檢索或創建模型
第一個或失敗未找到錯誤
UpdateOrCreate更新或創建
  1. 之前這樣寫報錯,但現在支持:
go
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 你可以獲得:

  1. Guard: 當前 Guard;
  2. Key: 用戶標識;
  3. ExpireAt: 過期時間;
  4. IssuedAt: 發行時間;

詳見文檔

Orm 的部分方法新增返回值

Version: v1.10.0

以下方法新增 *Result 返回值,以獲取受影響的行數:

go
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

基於 MIT 许可發佈