コード例 #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 にリクエストとレスポンスを注入して、それらに対して同じアクションを実行できるようにする必要があります。
では、問題は、このコードを 1 回だけ記述するにはどうすればよいかということです。
* したがって、各メソッドに次の行を記述する必要はありません
* したがって、メソッドを実行するたびに実行する必要はありません
@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);