![](/img/trans.png)
[英]In Java 8, how do I get my hostname without hard-coding it in my environment?
[英]How can I call my REST API get method without hard-coding a URL?
我正在開發REST API,以創建一個可以調用該API的網站(Java Webapp)和一個也可以調用該API的移動應用程序的想法。
但是,盡管幾乎沒有在線發布上述任何內容(到我自己的域),但我看不到如果將其部署到除計算機之外的其他地方,我的應用程序將如何工作。
這樣做的原因是因為我在整個商店中都有“ localhost:8080”的硬編碼實例!
例如:
server.xml (我正在使用Tomcat 8.0.20):
<Engine defaultHost="localhost" name="Catalina">
...
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
SomeClass.java (這是我的Web應用程序中的類文件之一,而不是我的REST API)
final WebResource webResource = client.resource( "http://localhost:8080/api/get" );
上面的WebResource來自Jersey客戶端1.8依賴項,它需要一個硬編碼的URL才能在指定的路徑上訪問我的API。
所有這些在本地都可以正常運行,但是當我將API / Webapp部署到生產環境中時,這肯定會停止工作,對嗎?
我想我正在尋找以下三種解決方案之一:
我嘗試使用
HttpServletRequest.getRequestURL()
盡管它返回正確的路徑(至少在本地-http:// localhost:8080 ),但我不斷收到以下異常:
com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: The element type "hr" must be terminated by the matching end-tag "</hr>".
所以我暫時不使用這種方法。
任何幫助表示贊賞。
謝謝 :)
為了調用標准的Web服務或REST API,您將需要在Internet中發布應用程序。
這意味着您不能使用localhost,您將需要一個EndPoint,可以從使用該API的所有移動應用程序或Web應用程序中訪問該EndPoint。
該端點是您在客戶端中編寫的內容
client.resource("http://www.myApi.org/api/get");
並且此基本URL(www.myApi.org)必須由使用您的API的所有客戶端知道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.