Saltar al contenido

¿Cómo puedo pasar un parámetro de ruta de cadena que contenga un carácter de barra?

Solución:

Caracteres reservados como , y / debe estar codificado en URL.

  • , está codificado como %2C
  • / está codificado como %2F

Tratar http://ip:port/samples/2000%2C2006%2C6576%2FM982.


El RFC 3986 define el siguiente conjunto de caracteres reservados que se pueden usar como delimitadores. Por lo tanto, requieren codificación de URL:

: / ? # / [ ] / @ ! $ & ' ( ) * + , ; =

Los caracteres no reservados no requieren codificación de URL:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 - _ . ~

Si la codificación de URL , no es una buena alternativa para usted, podría considerar el uso de parámetros de consulta. Tu código será como:

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getSample(@QueryParam("business") String business, 
                          @QueryParam("year") String year,
                          @QueryParam("sample") String sampleId {
    ...
}

Y tu URL será como http://ip:port/samples?business=2000&year=2006&sample=6576%2FM982.

Tenga en cuenta que el / aún debe estar codificado en URL.

Tratar de usar {muestra:. +} en lugar de {muestra}

La anotación @Path es una expresión regular y las expresiones regulares no coinciden / personaje.

Para anular la expresión regular, podemos agregar ".+ al final de PathParam.

De esta manera podemos permitir / en nuestro camino y evitar el uso de% 2F.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *