spring编写restfull风格的接口开发代价(即: 工作量)比较大, 有没有简化的一些方法
目前我们的所有controller接口的参数(DTO)都是对象类型, 即使只有一个参数也用一个DTO
这样我们实现了如下方面:
一. 清晰的controller代码
@RequestMapping(path = "/simplelist", method = RequestMethod.GET)
@ApiOperation(value = "查询文件简单列表")
public Ret<FileSimpleQueryRetDTO> simpleList(@Validated FileSimpleListDTO fileSimpleQueryDTO) {
File file = fileSimpleQueryDTO.convertTo(File.class);
//....业务代码
}
由于将参数验证, 接口API说明都放在了DTO中, 而controller只加了一个@Validated注解声明参数是需要验证的即可, FileSimpleListDTO.java 代码如下
@Setter
@Getter
@ApiModel("文件简单列表查询参数")
public class FileSimpleListDTO extends BaseDTO implements DomainConvertor{
@Length(max = 32, message = "父文件夹id最大长度为{max}")
@ApiModelProperty(value = "父文件夹id")
private String pid; // 父文件夹id
@Length(max = 255, message = "文件名最大长度为{max}")
@ApiModelProperty(value = "文件名", name = "文件名")
private String name; // 文件名
@Min(value = 1, message = "页数最小为{value}")
@ApiModelProperty(value = "第几页", name = "第几页")
private Integer pageNum;//页数
@OrderByTypeCheck
@FileQueryOrderByCheck
@ApiModelProperty(value = "排序字段", name = "排序字段", example = "name:asc,age:desc")
private String orderBy;//排序字段, 可多个, 如: name:asc,age:desc
}
二. 方便的 DTO 转 Domain
File file = fileSimpleQueryDTO.convertTo(File.class);
我这个方法是通用的, 就是用beanUtil.copyProperties(), 前提是DTO和Domain的field名字一样, 特别适合有大量参数的情况, 如 各类数据的创建场景
如果改成 restful 风格, 那么DTO里面的参数就要都展开到controller方法的参数代码中, 包括参数验证和api说明, 让代码很乱, 还有拼装成 domain 的时候, 我也需要手动一个一个调用 setter, 累死了
那么改成rest风格有什么好呢? 在失去了开发效率与可维护性的前提, 而追求外在???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你所提出的问题,跟 RESTful 本身表达的相去甚远。确实需要一部分参数置于 url,但Spring 会自动注入的。
你可能需要代码生成, 从DB到REST接口,单表【增删改查】,一键搞定。然后,再写自定义的接口定义,再生成,CODE一个Service即可