loopbackio / loopbackio/loopback-next
@param.array {type: 'object'} throws 400
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- TypeScript
- Estrellas
- 5.1k
- Forks
- 1.1k
- Merge medio
- 2 d 21 h
- PR fusionados (30 d)
- 27
Descripción
Steps to reproduce
In explorer, make a GET request to a controller that has an array of type: 'object': @param.array('objectArray', 'query', {type: 'object'})
Current Behavior
When making a GET request to a controller with an array of objects parameter @param.array('objectArray', 'query', {type: 'object'}), it will throw a 400 [{path: "/0", code: "type", message: "must be object", info: {type: "object"}}] because it doesn't parse the JSON string.
Example:
/getWithObjectArray?objectArray=%7B%22name%22%3A%22hello%22%7D
essentially parses to:
['{"name":"hello"}']
Expected Behavior
The request should parse the json string in each array item so the request does not fail.
Link to reproduction sandbox
Added a test to show it broken: https://github.com/kyle-apex/loopback-next/commit/3d9d8e602f8a747e63ced1cf443f92a59998f35f
Added some code to show it "fixed": https://github.com/kyle-apex/loopback-next/commit/0a69964708fe2f135acd47900d86636dc199a515
My "fix" may be too broad. In openapi-v3/../parameter.decorator.ts, @param.query.param forces content: { 'application/json': { schema, }, } so coerce-parameter.ts knows to parse the JSON. @param.array doesn't have a similar capability, so it's tough for coerce-parameter.ts to know if it should parse the object represented as a string as JSON or not.
Any ideas for best approach?
Additional information
darwin x64 12.18.1
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la reproducción de una solicitud GET usando @param.array con type: 'object', y luego inspecciona openapi-v3/../parameter.decorator.ts y coerce-parameter.ts para entender cómo se selecciona el contenido JSON. Está terminado cuando se analiza cada cadena de objeto JSON del array, de modo que la solicitud ya no falla con una respuesta 400.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- api
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100