这次改动比较大,所以跳过了 0.7.0,直接到了 0.8.0.
调整的方向是简化接口、统一体验。展开点说,就是:
合并`BulkPreProcessor`/`PreProcessor`。不像原来的 BulkPreProcessor 只能用于 FormBinder,PreProcessor 只能用于 field mapping,现在的 PreProcessor (接口) 可以通用于 FormBinder 和 field/group mapping
修改扩充`Constraint`。原来的 Constraint 只能用于 field mapping,现在的 Constraint (接口)可以通用于 FormBinder 和 field/group mapping
不过也没有丢弃`Bulk`和`single`的区分,毕竟有些 constraint/pre-processor 只接受 one input string,有些只接受 multiple input strings,所以增加了标记性 trait `InputMode`帮助扩展开发者用来指定和限制
当然还有很多其他的调整和改动,具体请看 Release Notes。在这我就不重写一遍了。
总的来说,这次的调整给普通用户/开发者和扩展开发者,都带来了极大简化和便利,虽然这种简化和便利需要自己作出一些调整来适应。
还好,尽管内部改造进行得轰轰烈烈,对外的影响还是不那么大的。
以下是一些受影响的地方以及相关修改建议:
对普通用户/开发者,
1)`pipe_:` 重命名为`>-:`
建议:应用代码中简单重命名即可
2)constraint `expandJsonData` 重命名为`expandJsonString`,并对参数有调整
建议:原来的应用代码可能是
expandJsonData("body", Some(""))pipe_: FormBinder(messages)
现在应改为
expandJsonString(Some("body"), Some(""))>-: FormBinder(messages)
阅读源码的同学应该能发现,重构后的代码比原来更清晰、更容易扩展了。
更多的细节,请查阅项目文档和源码。
软件详情:https://github.com/tminglei/form-binder/releases/tag/v0.8.0
下载地址:https://github.com/tminglei/form-binder/releases
来自:开源中国社区

