java - 构建 RESTful 服务代码的正确方法

标签 java web-services rest jersey

我是使用 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
}


}

任何人都可以告诉我构建我的服务的更好方法吗?我几乎没有什么想法,但不确定这些想法是否真的很好,或者我应该保留当前的实现。

问题

  1. 服务类(User)有具体的实现。创建一个接口(interface)(比如 IUser)并实现 User 类是一个好主意吗?

  2. 我应该创建一个 Controller 类并将 IUser 作为依赖项注入(inject) Controller 中吗? Jersey 是否提供任何开箱即用的功能创建 Controller 类。

阿图尔

最佳答案

我经常做的就是将 Spring 和 Jersey 结合起来。 Jersey 处理所有请求/响应和表示(通过工厂和/或构建器)相关的事情。 Spring @Service 处理所有业务逻辑、持久性等。

因此,资源接受(或不接受)请求,将其委托(delegate)给服务(将结果作为模型返回给资源),资源将此模型转换为匹配的(Json 或 XML,或类似的)表示形式,并将其作为响应返回。

我在这里看到的好处是,资源中清晰的通信(和身份验证),@Service 中独有的业务逻辑,与模型对象的组件间通信以及通过表示对象与客户端的通信。

关于java - 构建 RESTful 服务代码的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555196/

相关文章:

java - 如何将 CSV 文件中的数据输入到我的代码中?

java - Elastic Search 过滤了具有未映射字段的别名

java - 在 spring 应用程序中将 Controller 注入(inject)服务层是一种好习惯吗?

java - ResourceNameDiscover Class Not Found Axis 1.4 中的异常

java - 使用 requests Restful 客户端时出现阿拉伯编码错误

java - 实体模型或Pojo类作为REST API的返回对象

java - 有没有比在处理程序中实现方法更好的方法从 Netty 调用方法?

java - 将对象的 int 变量与 String 进行比较

web-services - 使用 Web 服务登录 Peoplesoft

rest - 致力于了解如何构建可扩展的系统