从 v1.9 升级到 v1.10
令人兴奋的新功能 🎉
功能增强 🚀
- 优化 HTTP 启动方式(1.10.0)
- 优化 GPRC 启动方式(1.10.0)
- 增加控制日志输出到控制台的配置(1.10.0)
- Request 修改、新增方法(1.10.0)
- 队列支持延迟调度(1.10.0)
- ORM Connection 支持配置表名前缀与单复数(1.10.0)
- 新增 docker-compose.yml 文件(1.10.0)
- 优化 Orm(1.10.0)
- 迁移文件中支持执行多条 SQL 语句
- 文件系统新增 minio 驱动
- contracts/http 增加 net/http 的 Status 映射
破坏性变化 🛠
升级指南
预计升级时间:20 分钟
更新依赖
go.mod
中更新依赖:
go get -u github.com/goravel/framework@v1.10.0 && go mod tidy
加密解密
Version: v1.10.0
新增 facades.Crypt
:
- config/app.go 文件
providers
新增&crypt.ServiceProvider{},
。
哈希
Version: v1.10.0
新增 facades.Hash
:
config/app.go 文件
providers
新增&hash.ServiceProvider{},
;新增 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
channel 新增 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 Connection 支持配置表名前缀与单复数
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
- 新增以下方法:
方法名 | 作用 |
---|---|
FirstOr | 查询或通过回调返回一条数据 |
FirstOrCreate | 查询或创建模型 |
FirstOrNew | 查询或实例化模型 |
FirstOrFail | 未找到时抛出错误 |
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
可以在 controller 中直接使用 http.StatusOK
等状态码,而不需要再导入 net/http
。
APP_KEY 必填
Version: v1.10.0
.env
文件中 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