Http请求参数类型传播

时间:2014-06-05 18:32:27

标签: java http rest web-applications

我有一个简单的网络应用,可以将请求传播到另一个网络应用。我的网络应用程序提供了两个非常相似的API,它们查询相同的Web应用程序,但查询不同类型的信息。例如,我的网络应用程序采用这两个URL

http://myservice.com:8080/otherservicecall1?userId=(userid)

http://myservice.com:8080/otherservicecall2?accountId=(accountid)

如果我想为我的网络应用程序使用相同的服务和数据层,区分这些请求的两个不同参数的最佳方法是什么?例如,我的数据层中有一个类,它处理来自其他服务的404,带有日志消息,例如

log.error("Could not find information on userId = " + userId);

但是像这样的日志和异常消息不够通用,不适用于这两种类型的请求,这意味着我必须传入一个参数类型变量,该变量只包含参数的名称。

我想我最终要问的是,是否有一种简单的方法来传播我通过服务和数据层通过控制器传递的参数的名称,而不是通过每个函数调用传递它?我想过以某种方式使用枚举,但我看不出它们会如何帮助。

1 个答案:

答案 0 :(得分:1)

对于异常,我们抛出一个通用的ObjectNotFoundException,它有一个返回我们正在寻找的对象的id的方法。如果我们需要专门的异常消息,我们将使用更具体的东西扩展ObjectNotFoundException,然后更新我们的Spring SimpleMappingExceptionResolver来处理新的,更具体的异常。

我们确保在exceptionMapping列表中保留最常见的异常(ObjectNotFoundException)。

对于服务,我不担心参数是否被称为userid或accountid。这两个参数的行为应该相同。如果您对此感到担心,那么您的用户界面层正在渗透到您的服务和持久层中;哪个是坏事。