中公開HttpServletResponse我有一個RESTful服務器實現以及一個用於客戶端調用的庫,全部使用JAX-RS。服務器組件分爲接口FooResource
和實施FooResourceService
。在實現中設置JAX-RS響應標頭,而不會在接口
爲了使客戶端和服務器庫共享REST風格的路徑和其他定義,我想給FooResource
接口拆分爲自己的項目:
@Path(value = "foo")
public interface FooResource {
@GET
public Bar getBar(@PathParam(value = "{id}") int id) {
我想設置一些標題的響應。一個簡單的方法來做到這一點是在方法簽名中使用@Context HttpServletResponse
:
public Bar getBar(@PathParam(value = "{id}") int id, @Context HttpServletResponse servletResponse) {
但問題是,這暴露了該接口實現細節。更具體地說,它突然要求我的REST定義項目(它在客戶端和服務器庫之間共享)拉入依賴關係---客戶端不需要(或期望)的東西。
我的RESTful資源服務實現如何在不拉動資源接口中的依賴關係的情況下設置HTTP響應頭?
我看到one post建議我注入HttpServletResponse作爲類成員。但是如果我的資源服務實現是單例,這將如何工作?它是否使用某種帶有線程本地代理的代理或者可以計算出正確的servlet響應的東西,即使單線程類被多個線程同時使用?還有其他解決方案嗎?
我不想在簽名中'Response'回報。我想要簽名中的一個'Bar'返回。 –
我的瀏覽器沒有做軟件開發。我的開發人員是。我想創建一個乾淨的API,它在語義上指示返回的內容。我想將JAX-RS特定項目分解爲註釋和實現代碼。 –