在服务器内部调用Web服务

时间:2013-10-28 17:09:18

标签: java web-services rest

我有一个web服务getEmployee(),当传递id时,它会获取单个员工的员工详细信息。

同一服务器上的另一个Web服务getEmployeeList(),当部门通过时,它获取整个员工列表。这将获取部门的ID,然后调用getEmployee()服务以获取所有详细信息。

web服务getEmployeeList()的响应基本上是getEmployee()响应的集合。

我的问题是如何最好地实施它?最好是在内部从getEmployeeList()多次调用getEmployee(),或者每次只调用getEmployee()的进程方法(getEmployee()中有一个进程方法,它将xml作为输入并返回响应xml )

2 个答案:

答案 0 :(得分:3)

确切的答案取决于应用程序的内部结构,但通常我会调用在同一服务器上运行的另一个Web服务API以便为请求提供服务。这将是低效的,并将一个实现与另一个实现联系起来。

如果需要返回员工列表,则前端REST层应从业务层或中间层调用方法以检索相关信息,通常采用一组域对象的形式。这个中间层将负责从持久层或某种类型获取实际数据 - 即从某种类型的数据库中获取正确的员工列表,但确切的实现细节不应该相关。

然后可以将这些转换为用于构建对客户端的响应的正确格式 - 即用于XML的JAXB对象。 (您的中间层也可以直接返回这些JAXB对象,但这种方法有利弊)

答案 1 :(得分:0)

如果有多个功能可以在多个Web服务中重用,那么该功能是一个很好的候选者,可以被另一个函数调用单独的函数,而不是仅仅具有生活在端点代码中的功能本身

当我发现需要创建这些类型的函数时,问题通常会成为一个问题,即它是model功能还是helper功能。

在一天结束时,如果您要在同一个API中向API发送一个卷曲请求到另一个端点,那么您只是浪费了不必要的时间来处理网络带宽...这通常最终会成为一个本地到本地的情况,但有时不是,在这种情况下,你会立即注意到它不是一个好主意。