2010-03-12 5 views
1

Étant donné un chemin vers une URL de type REST:Proposer un codage qui supprime les barres obliques que je peux utiliser le format d'URL-paramteters de style REST

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

Lorsque vous obtenez, il renvoie un PDF à l'foo -customer contenant la page du bar -URL.

Alors que foo est le nom de la barre de client est une URL. L'URL contient habituellement des barres obliques et pourrait ressembler à ceci:

http://anothersite.com/interestingarticle.html 

Comme arguments séparés REST URL par des barres obliques, je ne peux pas mettre juste dans l'URL ci-dessus REST. Quel codage devrais-je utiliser? Je ne peux pas utiliser Base 64 car il utilise aussi la barre oblique.

En guise de note technique, je vais encoder l'URL dans une application .NET et la décoder en PHP.

Répondre

1

L'URL est codé et envoyé de .NET en 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); 

Le script PHP de réception décode l'URL à double:

url = decode(decode($receivedDoubleEncodedUrl)); 
1

Quel est votre cas d'utilisation exactement? Pourquoi la barre doit-elle être une URL? Le serveur peut construire les URI comme il le souhaite.

Si pour une raison quelconque DOIT utiliser l'URL, faites ceci:

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

(avec chaîne de requête urlencoded bien sûr). Par un double codage URL de l'URL, il ne contient jamais de barres obliques et peut donc utiliser des paramètres séparés par des barres obliques.

+0

Merci pour votre réponse! Mon cas d'utilisation ne crée pas de PDF. Mais je * dois * envoyer une URL via REST afin que l'exemple soit valide. Votre chemin ne permet pas d'autres arguments pour approfondir l'URL. Et il n'est pas conforme au style REST de création d'URL. – Deleted

+0

Pourquoi dites-vous que mon chemin ne permet pas d'args supplémentaires? BTW: Il n'y a pas de "style REST pour créer des URL". L'URL que je montre est juste une URL parfaitement valide (à l'exception de l'encodage url non représenté du QS bien sûr). –

+0

Je pensais que les URL devraient être créées afin que plus de paramètres puissent être ajoutés pour approfondir la sélection. Peut-être que ce n'est pas le cas. En utilisant ce style, je ne serai pas en mesure d'ajouter plus de paramètres après l'URL, ce que je veux faire. En utilisant une sorte d'encodage. – Deleted

Questions connexes