Предложить кодировку, которая удаляет косые черты, которые я могу использовать в качестве формата для параметров URL в стиле REST - PullRequest
1 голос
/ 12 марта 2010

Указан путь к URL-адресу в стиле REST:

http://site.com/rest/customer/foo/robot/bar/1

Когда вы его ПОЛУЧАЕТЕ, он возвращает PDF на страницу foo , содержащую полосу -URL.

Хотя foo - это имя, строка клиента - это URL. URL обычно содержит косую черту и может выглядеть примерно так:

http://anothersite.com/interestingarticle.html

Как отдельные аргументы REST URL в виде косой черты, я не могу просто поместить их в URL REST выше. Какую кодировку я должен использовать? Я не могу использовать Base 64, так как она использует косую черту.

В качестве технической заметки я закодирую URL в .NET-приложении и расшифрую его в PHP.

Ответы [ 2 ]

1 голос
/ 15 марта 2010

Путем двойной URL-кодировки URL-адрес никогда не будет содержать косые черты и может поэтому использовать параметры, разделенные косыми чертами.

URL кодируется и отправляется из .NET с использованием C #:

String url = "http://urltoencode.com/a/page";
System.Text.Encoding westernEuropeanISOencoding = System.Text.Encoding.GetEncoding("iso-8859-1");
String doubleEncodedUrl = System.Web.HttpUtility.UrlEncode(url, westernEuropeanISOencoding);
doubleEncodedUrl = System.Web.HttpUtility.UrlEncode(doubleEncodedUrl, westernEuropeanISOencoding);

Получающий PHP-скрипт дважды декодирует URL:

url = decode(decode($receivedDoubleEncodedUrl));
1 голос
/ 12 марта 2010

Какой именно ваш вариант использования? Почему bar должен быть URL? Сервер может создавать URI любым удобным для него способом.

Если вы по какой-то причине ДОЛЖНЫ использовать URL, сделайте следующее:

http://site.com/rest/customer/foo/robot?bar=http://anothersite.com/interestingarticle.html&page=1

(со строкой запроса в кодировке urlencoded).

...