從 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