java后台接口怎么方便返回restful数据

发布于 2022-09-04 23:57:02 字数 374 浏览 18 评论 0

在使用spring mvc的情况下,
你们传给前端(ios/android)的json数据由spring对Bean进行转换的吧?
那个这个Bean,都是定义好的java类?

因为感觉前端需要的json非常灵活,后台如果用几个大而全的bean来封装,前端会得到许多无用的字段。
(虽然可以控制序列化策略,让null值甚至是默认值的字段不出现在json中,但这样一来,字段不全,阅读性差些。)
而如果精细化bean,则需要创建太多的bean。

我们项目中基本采用map来构造需要的数据(主要也是因为用的jdbctemplate,查询出来的数据就是map类型的),不用定义bean类,虽然很灵活,但经常要手写key名,也是麻烦所在。

大家都怎么解决的?请不吝指教,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

吻安 2022-09-11 23:57:02

首先Map的形式是最不推荐的。
前端需要的数据必定是灵活多变的,我们可以创建多个VO,DTO来满足不同的接口调用。

比如用户User中包含密码,而返回前端的数据不能包含密码等敏感字段,我们可以创建UserVO,返回不带密码的数据。你可以通过“领域驱动”进一步了解相关VO,DTO,PO等的区别和使用。

你可能会说,为表现层专门创建VO较为繁琐,bean之间的转换成了问题。
这里推荐使用mapstruct。mapstruct使用注解驱动完成转换代码的生成,你只需要提供Mapper接口即可。

比如User 和 UserVO 的转换:

@Mapper(componentModel = "spring", uses = {})
public interface UserMapper {
    UserVO userToUserVO(User user);
}
满栀 2022-09-11 23:57:02

直接使用Spring WebMVC 的Controller 上面,增加 @ResponseBody 返回POJO

画离情绘悲伤 2022-09-11 23:57:02

以前也是采用Map的方式进行组合数据,但是手写Key名确实很麻烦,而且很容易出错,这就是所谓的魔术值,应该尽量避免的。后来都改用小而美的bean,每个接口对应一个bean,虽然数量比较多,但是耦合性比建立大而全的bean更松散,修改bean不会影响其他接口,还是可以接受的,不知道有没有其他更优雅的方案。

初见你 2022-09-11 23:57:02

目前我使用VO和jsonView,VO还是手动转换。。

笔落惊风雨 2022-09-11 23:57:02

使用spring在controller层进行控制

  @RequestMapping(value = '/{id}', method = RequestMethod.POST)
  void method1(@PathVariable long id) {
     //如果url中是/123
     //则id = 123
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文