TaleLin / lin-cms-spring-boot

🔨 基于SpringBoot的CMS/DMS/管理系统开发框架
http://doc.cms.talelin.com/
MIT License
904 stars 253 forks source link

关于分页接口中参数的定义,建议封装成DTO #224

Open colorful3 opened 3 years ago

colorful3 commented 3 years ago

例如如下代码: https://github.com/TaleLin/lin-cms-spring-boot/blob/2ff4bf8bf1a2d347af3a1f70416a121481a45add/src/main/java/io/github/talelin/latticy/controller/cms/AdminController.java#L72-L78

我们的项目中的示例代码,但凡碰到分页的相关的传参,都是采用这样的方式定义,将分页的查询参数,定义在了方法参数签名中的,这样虽然比较直观,但无疑增加了代码量。 我们可以封装一个基础分页DTO(例如BasePageDTO),在 DTO 中定义这些属性。如果有额外的参数,可以继承该 DTO。这样既减少了代码量,也提高了代码的封装性。

gadfly3173 commented 3 years ago

Get请求参数使用bean接收时会有个问题,此时的参数绑定并不经过jackson,需要增加BindException的异常处理,并且不能自动从snake_case转camelCase,我后来是用一个自定义的ServletModelAttributeMethodProcessor和ServletRequestDataBinder解决的参数绑定。

colorful3 commented 3 years ago

Get请求参数使用bean接收时会有个问题,此时的参数绑定并不经过jackson,需要增加BindException的异常处理,并且不能自动从snake_case转camelCase,我后来是用一个自定义的ServletModelAttributeMethodProcessor和ServletRequestDataBinder解决的参数绑定。

欢迎提交pr来贡献你的代码!😸