Включение URL-адреса в качестве параметра в веб-запрос Java Spring REST - PullRequest
2 голосов
/ 10 августа 2011

У меня есть веб-сервис REST, в котором я хотел бы принять URL-адрес в качестве параметра

Что-то вроде:

Example call: http://myserver.com/myService/http://www.website.com/files/myfile.docx

Первоначальное сопоставление сервера было:

 @RequestMapping(value="/myService/{url}", method=RequestMethod.GET)

Очевидно, что вызов этого с любым URL, который имеет "/" в, нарушает сопоставление с веб-сервисом.

Я пытался использовать регулярное выражение для URL в отображении

@RequestMapping( value="/getBase64/<\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]>", method=RequestMethod.GET )

но, похоже, это тоже не сработало.

Поддерживает ли @RequestMapping регулярное выражение, подобное этому, или я должен просто заменить "\" в параметре другим символом, а затем преобразовать обратно на сервер?

1 Ответ

0 голосов
/ 10 августа 2011
http://myserver.com/myService/http://www.website.com/files/myfile.docx

Это не RFC-совместимый URL, поэтому я не ожидаю, что он будет работать.Вы должны отправить идентификатор сайта (это действительно спокойный способ).Я думаю, что если вы хотите отправить URL-адрес в виде строкового параметра (может, вместо этого вы можете отправить хеш-код?), Единственный способ сделать это - без схемы http: // и правильной экранирующей косой черты (не уверен, будет ли она работать).

Однако лучший способ, если вы должны отправить и URL-адрес в форме, которую вы упомянули (http://website.com/blablabla), - это отправить запрос POST и ваш параметр в качестве параметра формы (как в случае стандартногоФорма HTTP).

import javax.ws.rs.POST;
import javax.ws.rs.FormParam;
import javax.ws.rs.Path;

// (...)

    @POST
    @Path("/myservice/")
    public Response myService(@FormParam("url") final String url) {
      LOG.debug(String.format("Received URL: %s", url));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...