我正在开发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 Client 1.8依赖项,需要使用硬编码的URL来访问指定路径的API。
这一切在本地都可以正常工作,但当我将API / Webapp部署到生产环境中时,这肯定会停止工作,对吗?
我想我在这里寻找三种解决方案之一:
我使用
尝试了选项2HttpServletRequest.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>".
所以我现在已经不再使用这种方法了。
感谢任何帮助。
谢谢:)
答案 0 :(得分:0)
要调用标准Web服务或REST API,您需要在Internet中发布应用程序。
这意味着您无法使用localhost,您将需要一个可以从使用您的API的所有移动或Web应用程序访问的EndPoint。
此端点就是您在客户端中编写的内容
client.resource("http://www.myApi.org/api/get");
此基本URL(www.myApi.org)必须为使用您的API的所有客户所知。