One-element array in a query parameter not parsed correctly
mz8i opened this issue · comments
Maciej Ziarkowski commented
When a query parameter is an Array, but the query contains just one element
(for example /path?words=foo
as opposed to /path?words=foo&words=bar
) then at run-time the parameter passed to the controller is actually a string, not a one-element array.
In my controller, I solved it by code that feels like it could be included in the library code which parses the parameters?
@GET
@Path('endpoint')
public endpoint(@QueryParam('words') words: string[]): void {
let wordsArray = words;
if (typeof wordsArray === 'string') {
wordsArray = [wordsArray];
}
// do something with wordsArray
}
MatthieuC commented
I can confirm this bug too.
Nicholas Kuchiniski commented
this happened to me too, it just works the right way if you send more than one item in the array, otherwise it parses for "type" instead of "type []"