apache / apache/servicecomb-java-chassis

Jackson解析Enum类型出现异常,未使用InvocationException进行捕获处理

Abierto
#3,711 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
1.9k
Forks
814
Merge medio
8 d 23 h
PR fusionados (30 d)
1

Descripción

用户提交的请求参数中Enum值不在swagger的yaml约束的范围内,例如swagger的yaml约束operation为“1”或“2”,输入“operation”:“”或“operation”:“3”,EnumDeserializerl类中使用Jackson解析均会均会抛出JsonMappingException异常,但是RestCodec的restToArgs方法未捕获JsonMappingException,只是使用了Exception来捕获异常但并未获取异常的字段,导致使用spi 机制实现ProduceJsonProcessor时,无法获取框架解析异常的字段,我们需要在RestCodec中捕获json异常,以便于使用ProduceJsonProcessor接收并处理,并向用户展示请求参数中导致异常的字段;建议RestCodec.restToArgs()中使用JsonMappingException.getPath().get(i).getFieldName()接收多个path,并使用throw new InvocationException(Status.BAD_REQUEST, ErrorCode.PARAM_INVALID, stb.toString());把异常抛给ProduceJsonProcessor处理 (或使用InvalidFormatException,但是由于主要是枚举类解析会出现异常,所以也可使用JsonMappingException处理)

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza en RestCodec.restToArgs y sigue cómo se gestiona la excepción de análisis de Jackson de EnumDeserializerl. Comprueba cómo ProduceJsonProcessor recibe los errores y, después, asegúrate de que los nombres de los campos de la solicitud no válidos de las rutas de JsonMappingException estén disponibles mediante InvocationException con BAD_REQUEST y PARAM_INVALID; el issue permite JsonMappingException o InvalidFormatException.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
api, backend-api-design
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.