代码 #1 的示例:
@POST
@Path("/foo")
@Consumes({ MediaType.APPLICATION_JSON })
public SomeClassA foo(SomeOtherClassB input, @Context HttpServletResponse response, @Context HttpServletRequest request) {
takeSomethingFromRequestAndPutOnResponseHeader(response, request);
//... do more logic actions
return x;
}
@POST
@Path("/bar")
@Consumes({ MediaType.APPLICATION_JSON })
public SomeClassC bar(SomeOtherClassD input, @Context HttpServletResponse response, @Context HttpServletRequest request) {
takeSomethingFromRequestAndPutOnResponseHeader(response, request);
//... do more logic actions
return y;
}
如您所见,我们有许多不同的 API 方法,并且在每个 API 中,我们需要注入请求和响应,以便我们能够对它们执行相同的操作。
所以,问题是:我们怎样才能让这段代码只写一次?
* 所以,我们不需要在每个方法上写
* 所以,我们不需要每次执行该方法
@Context HttpServletResponse response, @Context HttpServletRequest request
takeSomethingFromRequestAndPutOnResponseHeader(response, request);
这主要是为了以防有人忘记这样做......
原因是我们的 API 在多个服务器上运行,我们希望将服务器 url(来自请求)添加到响应头中,以便于不同环境的调试。
非常感谢,
乌里。
我们想要的是:
@POST
@Path("/foo")
@Consumes({ MediaType.APPLICATION_JSON })
public SomeClassA foo(SomeOtherClassB input) {
//... do more logic actions
return x;
}
@POST
@Path("/bar")
@Consumes({ MediaType.APPLICATION_JSON })
public SomeClassC bar(SomeOtherClassD input) {
//... do more logic actions
return y;
}
虽然这是在其他地方写过一次。
@Context HttpServletResponse response, @Context HttpServletRequest request
takeSomethingFromRequestAndPutOnResponseHeader(response, request);