2015-07-12 68 views
2

我正在編寫一個Java庫,允許用戶通過其REST API與Parse數據庫進行交互。爲了發送每個請求,每個請求頭必須包含特定於用戶給定項目的兩個API密鑰。我希望用戶可以只用這兩個鍵初始化一個Parse類,這樣每次用戶被要求向REST API發送請求時,這些操作類(它們配置和發送請求並根據操作是否保存,更新,查詢等)可以輕鬆訪問這些密鑰並將其添加到他們的請求中。如何在整個Java項目中共享API密鑰

我想初始化面向用戶的解析類,像這樣:

Parse parseDB = new Parse("API id1", "API id2"); 

的但是剩下的時間裏,用戶應該只能夠與ParseObjects互動,並調用時節省或其他操作對這些對象具有的parseObject實例創建一個解析命令類實例負責實際提出要求時,像這樣的:

ParseObject obj = new ParseObject("classname"); 
obj.save(); 
//this will create an instance of a ParseCommand class, which will actually send the request 

我不知道這是否是好的OO設計或沒有,而我」我相當肯定有一個更好的方法來做到這一點,我有我不知道在Parse對象的第一次初始化之後,這些ParseCommand Classes應該如何訪問這兩個API密鑰。如果任何人有關於如何訪問這些密鑰的最佳做法的任何建議,將不勝感激。

謝謝你的時間!

+0

也許使API鍵是一個靜態變量? – Moshe

回答

0

感謝您對卡察夫建議靜態變量,我沒想到的是,雖然我知道靜態變量不被認爲是在OOP良好的作風,它完美地爲我工作。我最終在Parse類中聲明瞭兩個靜態變量,在每個ParseCommand類中,我只是通過Parse.APIKey1和Parse.APIKEy2訪問了每個API密鑰。一個簡單的解決方案,但在我的情況下,這很好。

0

如果使用Spring,可以將Parse屬性依賴注入到ParseObject中。注入的Parse類型屬性可以設置爲singleton,也可以通過構造函數注入將Parse bean注入到Parse bean中。您的API密鑰可以從代碼中取出並以這種方式在spring xml中配置。在片段下面你會有一個想法。

<bean id="parseObj" class="com.parse.ParseObject"> 
     <property name="parseDB" ref="parse"/> 
</bean> 



    <bean id="parse" class="com.parse.ParseDB" scope="singleton"> 
     <constructor-arg> 
      <constructor-arg type="java.lang.String" value="API-KEY1"/> 
      <constructor-arg type="java.lang.String" value="API-KEY2"/> 
     </constructor-arg> 
    </bean> 

A simple dependency injection example here

+0

非常感謝您的回答,我目前正在使用Moshe的靜態變量建議,但實際上我肯定會盡早嘗試這個方法! –