我是使用 Jersey 编写 RESTful 服务的新手。以下是示例代码。
我创建了一个类“User”并将所有内容放入该类中。
// Service to get the user information
@Path("/User")
public class User {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/getloggedinuser")
public String getUserInfo(@Context HttpServletRequest httpServletRequest) {
// Some code to get the user information
// Call M1
M1();
}
private void M1(){
// Some other business logic
// Call another method
M2();
}
private void M2(){
// Some other business logic
}
}
任何人都可以告诉我构建我的服务的更好方法吗?我几乎没有什么想法,但不确定这些想法是否真的很好,或者我应该保留当前的实现。
问题
服务类(User)有具体的实现。创建一个接口(interface)(比如 IUser)并实现 User 类是一个好主意吗?
我应该创建一个 Controller 类并将 IUser 作为依赖项注入(inject) Controller 中吗? Jersey 是否提供任何开箱即用的功能创建 Controller 类。
阿图尔
最佳答案
我经常做的就是将 Spring 和 Jersey 结合起来。 Jersey 处理所有请求/响应和表示(通过工厂和/或构建器)相关的事情。 Spring @Service 处理所有业务逻辑、持久性等。
因此,资源接受(或不接受)请求,将其委托(delegate)给服务(将结果作为模型返回给资源),资源将此模型转换为匹配的(Json 或 XML,或类似的)表示形式,并将其作为响应返回。
我在这里看到的好处是,资源中清晰的通信(和身份验证),@Service 中独有的业务逻辑,与模型对象的组件间通信以及通过表示对象与客户端的通信。
关于java - 构建 RESTful 服务代码的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555196/