parametros - ¿Cómo pasar el valor nulo en el servicio web RESTful para un método GET?
pasar parametros url web service (3)
La coincidencia predeterminada de una variable es [^/]+? (al menos un personaje) puede establecer manualmente la coincidencia en [^/]*? y también debe coincidir con cadenas vacías.
Simplemente agregue el formato a la variable userid:
@Path("/getProfile/{memberno}/{userid: [^/]*?}/{channelid}")
Actualmente tengo un servicio web RESTFul expuesto con CXF . El método se ve así.
@GET
@Path("/getProfile/{memberno}/{userid}/{channelid}")
@Consumes("application/xml")
public MaintainCustomerProductResponse getUserDetails(
@PathParam("memberno") String membernumber,
@PathParam("userid") String userid,
@PathParam("channelid") String channelid){
//DO Some Logic here.
}
Se puede acceder a esto a través de la siguiente URL y al enviar datos válidos recibo una respuesta.
http://server.com:8080/UserService/getProfile/{memberno}/{userid}/{channelid}
Pregunta: ¿Cómo puedo pasar el valor nulo para userid de userid ?
Si simplemente ignoro el {userId} la solicitud no está llegando al servicio web del lado del servidor.
Ejemplo
http://server.com:8080/UserService/getProfile/1001//1
Nota: Estoy usando SOAPUi para Testing y, sin dar el valor de userId , veo la siguiente respuesta en SOAPUI y Request no llega al servidor.
Respuesta de SOAPUI
<data contentType="null" contentLength="0"><![CDATA[]]></data>
Lo resolví con un Work Around. Creé otro método que toma solo dos parámetros. Ahora, según el URL de la solicitud, se llama un método diferente
Cambie @Path("/getProfile/{memberno}/{userid}/{channelid}") @Path("/getProfile/{memberno}/{userid = default}/{channelid}") para que acepte null valores a la identificación del usuario. Puede usar plantillas URI para especificar valores predeterminados para parámetros opcionales. Consulte