从 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 语句(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.1 && 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 | 查询或通过回调返回一条数据 |
| 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