Length limits (minLength/maxLength, minItems/maxItems) are dropped from body params moved into a definition
Los mantenedores suelen responder en 1 día
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Versions
grape-swagger 2.1.4 (the same code is on master).
What happens
https://github.com/ruby-grape/grape-swagger/pull/934 documents length: limits. That works for query and path params. For body params on POST/PUT/PATCH, DocMethods::MoveParams moves the params into a definition, and the limits are lost on the way:
MoveParams.property_keyscopies a fixed list of keys, which doesn't includeminLength/maxLength.MoveParams.document_as_arraybuilds the array property by hand (type,description,example,items), sominItems/maxItemsare dropped.
Repro
require 'grape'
require 'grape-swagger'
require 'json'
class API < Grape::API
format :json
params do
requires :name, type: String, length: { max: 50 }
requires :tags, type: Array[String], length: { max: 3 }
end
post :things do; end
add_swagger_documentation
end
env = Rack::MockRequest.env_for('/swagger_doc')
_status, _headers, body = API.call(env)
puts JSON.pretty_generate(JSON.parse(body.each.to_a.join)['definitions'])
Expected
"name": { "type": "string", "maxLength": 50 },
"tags": { "type": "array", "items": { "type": "string" }, "maxItems": 3 }
Actual
"name": { "type": "string" },
"tags": { "type": "array", "items": { "type": "string" } }
Possible workaround / fix
Prepending this makes the repro print the expected output:
module KeepLengthLimits
private
def property_keys
super | %i[minLength maxLength]
end
def document_as_array(param)
super.merge(param.slice(:minItems, :maxItems))
end
end
GrapeSwagger::DocMethods::MoveParams.singleton_class.prepend(KeepLengthLimits)
A fix in the gem would probably be adding minLength / maxLength to property_keys and copying minItems / maxItems in document_as_array.
- Lenguaje dominante
- Ruby
- Estrellas
- 1.1k
- Forks
- 477
- Merge medio
- 5 h 25 min
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la 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.
Más de ruby-grape/grape-swagger
-
Support default_response and default in 2.3; stop reading route.descPosiblemente ocupada @numbata la tomó hace 53 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ruby-grape/grape-swagger#989 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
ruby-grape/grape-swagger#987 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Bug report: omitted array parameters with `array_use_braces: true`Posiblemente ocupada @olivier-thatch la tomó hace 527 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
ruby-grape/grape-swagger#952 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Bug Report: `default` for array params (`type: [String]`) is incorrectly placed inside `items`Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
ruby-grape/grape-swagger#950 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Setting add_base_path without base_path explicitly specified, returned an errorPosiblemente ocupada @bekicot la tomó hace 837 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
ruby-grape/grape-swagger#935 ·
Los mantenedores suelen responder en 1 día
Todos los issues de ruby-grape/grape-swagger
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
metanorma/metanorma-standoc#1315 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
metanorma/metanorma-iso#1681 ·
Los mantenedores suelen responder en 1 día
-
Missing zh-CN translation: components/common/CommunitySolution.tsx:communitySolution.authorsSolutionAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
openstreetmap/openstreetmap-website#7554 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
manyfold3d/manyfold#7445 ·
Los mantenedores suelen responder en 1 día