关于现在REST API的Java服务端Controller层的作用是否越来越小了?
现在越来越多前后端分离项目,大多数Java服务端都只提供REST接口。Controller
层感觉好多都只是将参数转给Service
层而已
例如曾经见到的代码:
@RestController
public class LoginController {
@Autowired
private LoginService loginService;
@RequestMapping("/login")
public ApiResult login(String userName, String password){
return loginService.login(userNmae, password);
}
}
Java服务端要实现一个接口,感觉还是挺麻烦的,要建立Controller,Service,ServiceImpl,DAO,DaoImpl大体五个文件,现在的ORM框架基本都支持代理,少了DaoImpl。但还是有四个文件需要创建。
今天看到了Spring-data-rest觉得他的设计思路很好,但还是没有找到自定义返回结果的方法.只需要一个注解就自动生成了REST API接口
@RepositoryRestResource(path = "user")
@Repository
public UserDao extends JpaRepository<Person, Long> {
}
//就一个@RepositoryRestResource注解就生成了以下几个接口
GET http://localhost:8080/user //用户列表
GET http://localhost:8080/user/{id} //单个用户
POST http://localhost:8080/user // 创建用户 以application/json
PUT http://localhost:8080/user/{id} //更新用户信息 请求体为 applcation/json
还有HEAD,PATCH,DELETE等接口
当然spring-data-rest有很多不足,但框架有意的封装Controller层,这是否说明Java服务端 REST服务可以无Controller.可以不用写Controller层代码。只关心业务逻辑?
@RestService
public interface LoginService {
@RequestMapping("/login")
ApiResult login(String userName, String password);
}
类似上面的代码是否我们对于@RestService
的需求要大于@RestController
?Controler层是否在现如今的REST服务下作用已经很小了?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
rest下Controller几乎完全没用,是时候出现一个新的框架,取消Controller。
在好多年前,这个问题叫做service层是多余的嘛,是同一个问题。
顺带说一句你觉得controller没用,是因为spring为你做了太多,以至于写些注解就完成了90%的工作。
即使如此,Controller能做的还有不少,比如数据校验,数据加工,并不是请求的参数都是满足service参数,service返回也不都是满足响应格式
确实没有以前大了,比如前后端分离之后,基本就不管页面跳转,也不需要给模板提供数据了,但是本质上还是作为“入口”的
dao是基本的数据存取,service组装dao和其他的东西组成业务逻辑,controller把service暴露出去
个人觉得,springmvc模式中,一个http请求过来,处理请求的还是servlet,是否需要controller其实影响不大,如果可以封装的更高效,更便捷,那最好,楼上无用的结论持保留意见吧
目前我写spring的原则是,如果不需要事务和复用的业务代码直接写到controller的方法内,直接调用dao实现。