Hice una aplicación Spring REST donde puede realizar operaciones CRUD basadas en los métodos HTTP de POST, PUT, GET, DELETE. Tengo la plantilla URI típica deEsquema de codificación de REST URL Spring:% 20 o + ¿Cuál?
http://host/root/{id}/{name}/{address} and etc.
Tenemos un cliente que está accediendo a este servicio REST. Al parecer, al que se envía parámetros para el nombre de varios términos y dirección de la siguiente forma:
http://host/root/11/John+Smith/10+Las+Vegas+USA
Están utilizando el esquema de codificación HTML basado en la aplicación escriba/x-www-form-urlencoded. De acuerdo con el artículo en Wikipedia
La aplicación/x-www-form-urlencoded tipo
la codificación utilizada por defecto se basa en una versión muy temprana de los generales URI reglas código porciento , con un número de modificaciones como normalización de nueva línea y reemplazando espacios con "+" en lugar de "% 20". - http://en.wikipedia.org/wiki/Percent-encoding
Sin embargo parece que el esquema de URL estándar de codificación es utilizar% 20 en la sustitución de espacios en las plantillas de URI. ¿Cuál es correcto?
My Spring REST convierte automáticamente% 20 en espacios. Se interpreta correctamente Estoy usando Spring 3.0.4. Cuando + se encuentra con mi servicio REST, se acepta tal como está. Por supuesto, cuando pongo la validación para excluir +, de hecho se excluye como se esperaba.
¿Estoy dentro de las normas o hay un doble estándar? ¿O el cliente está usando un esquema antiguo?
Gracias por la respuesta. Es lo que pensaba. El formato "http: // host/root/11/John + Smith/10 + Las + Vegas + USA" es correcto para usar cuando se usa Spring REST como opuesto a Spring MVC. – chris
Con Spring MVC "http: // host/root/11 /? Name = John + Smith & address = 10 + Las + Vegas + USA" es correcto. El formato "http: // host/root/11/John% 20Smith/10% 20Las% 20Vegas% 20USA" también es correcto en términos de Spring MVC. – chris
Ahora cuando le dije a otro programador que tenemos un servicio REST, ¿por qué asumió que usaba el esquema de codificación de la aplicación/x-www-form-urlencoded que convierte los espacios a "+". ¿No es esta una terminología estándar? ¿O es un error suponer que lo saben? ¿O soy yo quien está haciendo la suposición equivocada? – chris