es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La API maneja una solicitud defectuosa sin generar un evento de error, aunque esté anotada con ApiModelProperty con dataType.

Obtengo el siguiente error: “El valor generado es de tipo entero en lugar de tipo ‘cadena'” con la exploración de conformidad de 42crunch con el siguiente problema reportado: “La API maneja una solicitud defectuosa sin generar un error”.

En la exploración de prueba, intenta pasar el siguiente cuerpo de solicitud:

{"type":1,"visitId":"xxxx","visitorId":"Ag5w\u0010l\u0014}

Así que en la solicitud anterior, se pasa el tipo como entero pero la API está declarada con una propiedad de tipo “cadena”.

Tengo la siguiente anotación para la clase de solicitud de entrada. Entonces, ¿por qué está arrojando un error aunque la propiedad de tipo está declarada con la anotación ApiModelProperty que acepta solo “java.lang.String”?

@ApiModelProperty(dataType = "java.lang.String", value = "Type", example = "Data")  
@Pattern(regexp = "^.*$")
@Size(min = 1, max = 50)
private String type;

También tengo la anotación @Valid para el método de punto de conexión del controlador que acepta el cuerpo de la solicitud.

public ResponseEnvelope recommendedProducts(   
     @Valid @RequestBody RecommendedProductRequest productRequest,
 HttpServletResponse httpServletResponse) {

Por favor, avíseme cómo resolver esto. ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el valor generado para la propiedad “type” en el cuerpo de la solicitud es un número entero en lugar de una cadena. Esto se debe a que el cuerpo de la solicitud está enviando “type” como el número 1, que es un entero, en lugar de “Data”, que es una cadena.

    Aunque la propiedad “type” en la clase de solicitud de entrada está declarada con la anotación @ApiModelProperty con el dataType definido como “java.lang.String”, esto solo sirve como una pista para la herramienta de generación de código y no impone el tipo de entrada durante la ejecución.

    Para solucionar este problema, puedes agregar una anotación @Pattern a la propiedad “type” en la clase de solicitud de entrada para imponer un patrón específico para la cadena de entrada, como permitir solo caracteres alfabéticos. Además, puedes modificar el código del cliente para enviar “type” como una cadena en lugar de un entero, para que coincida con el tipo de entrada esperado. Por último, puedes modificar el código del servidor para manejar la solicitud defectuosa y generar un error en lugar de ignorarla silenciosamente.

Comments are closed.