Skip to content

How to describe urls with ordered indexed array? #1504

Description

@denisvmedia

Here is an example url that I tried to describe with OpenAPI, but failed:

http://example.com/api/items?filter[0][field]=value1&filter[0][type]=gte&filter[0][x]=490&filter[1][field]=value2&filter[1][type]=lte&filter[1][x]=200&filter[2][field]=value3&filter[2][type]=between&filter[2][x]=100&filter[2][y]=300

Some additional notes: we have an array of filters that should accept some values. The parameters can be represented in JSON like this:

[
{
"field": "value1",
"type": "gte",
"x": 490
},
{
"field": "value2",
"type": "lte",
"x": 200
},
{
"field": "value3",
"type": "between",
"x": 100,
"y": 300
}
]

With this type of query parameters indexing we get natural arrays in PHP without any additional "movements" using something like this:

parse_str('filter[0][field]=value1&filter[0][type]=gte&filter[0][x]=490&filter[1][field]=value2&filter[1][type]=lte&filter[1][x]=200&filter[2][field]=value3&filter[2][type]=between&filter[2][x]=100&filter[2][y]=300', $result);
var_dump($result);
/** output:array(1) { ["filter"]=> array(3) { [0]=> array(3) { ["field"]=> string(6) "value1" ["type"]=> string(3) "gte" ["x"]=> string(3) "490" } [1]=> array(3) { ["field"]=> string(6) "value2" ["type"]=> string(3) "lte" ["x"]=> string(3) "200" } [2]=> array(4) { ["field"]=> string(6) "value3" ["type"]=> string(7) "between" ["x"]=> string(3) "100" ["y"]=> string(3) "300" } }}**/

So, this is not something exotic, this is a normal php-style query uri. But unfortunately it seems OpenAPI just doesn't support it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    param serializationIssues related to parameter and/or header serialization

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions