Roaster ignores query parameters. If you want to explicitly send a client error on undefined query parameters, you could write some middleware. It would be nicer if you could make it explicit using the OpenAPI definition.
Propose to add support for x-allow-unknown-query-parameters as boolean under the method. Default value = true
Support could look like:
declare function parameters:in-request ($request as map(*), $response as map(*)) as map(*)+ {
if (not(map:contains($request?config, "parameters")))
then ($request, $response) (: route expects no parameters, return request unchanged :)
else if (not($request?config?parameters instance of array(*)))
then error($errors:OPERATION, "Parameter definition must be an array: " || $request?pattern, $request)
else (
let $errorUnknownParams :=
exists($request?config?x-allow-unknown-query-parameters[. = false()])
let $unsupported-params :=
if ($errorUnknownParams) then
request:get-parameter-names()[not(. = $request?config?parameters?*[?in = "query"]?name)]
else ()
let $unsupported-params :=
if (empty($unsupported-params)) then () else (
error($errors:BAD_REQUEST, "Unsupported parameter(s): " || string-join($unsupported-params, ', '))
)
let $maps := for-each($request?config?parameters?*, parameters:retrieve#1)
(: extend previous parameters map with new values :)
let $merged := map:merge(($request?parameters, $maps))
return (
map:put($request, "parameters", $merged),
$response
)
)
};
Roaster ignores query parameters. If you want to explicitly send a client error on undefined query parameters, you could write some middleware. It would be nicer if you could make it explicit using the OpenAPI definition.
Propose to add support for
x-allow-unknown-query-parametersas boolean under the method. Default value = trueSupport could look like: