Я занимаюсь разработкой REST API с идеей создания веб-сайта (Java Webapp), который будет вызывать этот API, и мобильного приложения, которое также будет вызывать API.Как я могу вызвать метод REST API, чтобы получить метод без жесткого кодирования URL?
Однако, несмотря на то, что вы нигде не публикуете ни одно из указанных выше онлайн (в моем собственном домене), я не вижу, как мое приложение будет работать, если оно будет развернуто в любом месте, кроме моего компьютера.
Причина этого в том, что у меня есть жестко закодированные экземпляры «localhost: 8080» по всему магазину!
Например:
server.xml (я использую Tomcat 8.0.20):
<Engine defaultHost="localhost" name="Catalina">
...
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
SomeClass.java (Это один из файлов классов в моем веб-приложение , а не мой REST API)
final WebResource webResource = client.resource("http://localhost:8080/api/get");
выше WebResource от 1,8 зависимости Джерси клиента, и REQ uire жестко закодированный URL для доступа к моему API по указанному пути.
Все это прекрасно работает на месте, но, конечно, когда я развертываю API/Webapp в производство, это перестанет работать, верно?
Я предполагаю, что я ищу один из трех решений здесь:
- Некоторые реализации позволяет мне получить доступ к моему REST API, используя относительные пути (так что я только должен указать «/ апи/получить», например,). Я планирую развертывать API и Webapp в одном домене в производстве, поэтому я предполагаю, что это не будет проблемой (?)
- Некоторые методы динамического определения соответствующего базового URL-адреса, которые будут работать независимо от среда, развернуть приложение в
- любых других предложений, которые сделали бы мое приложение пуленепробиваемое в этом отношении
Я попытался вариантом 2 с помощью
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>".
поэтому я выводящий от использования этого метода в настоящее время.
Любая помощь приветствуется.
Спасибо :)
Это исключение не имеет ничего общего с вашей проблемой URL-адреса - посмотрите на трассировку стека, чтобы узнать, откуда она. –
Это единственная строка в исключении (нет следа, похоже, что она была подавлена). В любом случае ни один из моих файлов HTML/XSL не содержит элемента
. Мое исследование подсказывает мне, что это исключение вызвано прерванным ответом, результатом чего является не-правильно сформированный XML. – Adam
Ну, если нет трассировки стека, это звучит так, как будто есть какая-то диагностическая проблема - неясно, где вы видите это исключение вообще. –