Skip to content

Incorrect complex query parameters #960

@laurynas-wn

Description

@laurynas-wn

Hey, I'm trying to generate a GET request with a complex query object. I've made a test route.

"/booking/test":{
  "get": {
    "operationId": "testing",
    "parameters": [
      {
        "name": "name",
        "in": "query",
        "required": true,
        "schema": {
          "type": "string",
        },
      },
      {
        "name": "employees",
        "in": "query",
        "required": true,
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/Person",
          },
        },
      },
    ],
    "responses": {
      "200": {
        "description": "",
      },
    },
    "tags": ["booking"],
  },
}
"Responsibility": {
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
    },
    "priority": {
      "type": "number",
    },
    "manager": {
      "type": "string",
      "nullable": true,
    },
  },
  "required": ["name", "priority", "manager"],
},
"Person": {
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
    },
    "location": {
      "type": "string",
    },
    "responsiblity": {
      "$ref": "#/components/schemas/Responsibility",
    },
  },
  "required": ["name", "location", "responsiblity"],
},
"CompanyDto": {
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
    },
    "employees": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Person",
      },
    },
  },
  "required": ["name", "employees"],
}

The generated types are perfect, I can make a request as follows.

BookingService.testing('yooo', [
      {
        name: 'Dave',
        location: 'Las Vegas',
        responsiblity: {
          name: 'Thing A',
          priority: 1,
          manager: 'Tom',
        },
      },
      {
        name: 'Jane',
        location: 'New York',
        responsiblity: {
          name: 'Thing B',
          priority: 9001,
          manager: null,
        },
      },
    ])

http://localhost:9001/booking/test?name=yooo&employees%5Bname%5D=Dave&employees%5Blocation%5D=Las%20Vegas&employees%5Bresponsiblity%5D%5Bname%5D=Thing%20A&employees%5Bresponsiblity%5D%5Bpriority%5D=1&employees%5Bresponsiblity%5D%5Bmanager%5D=Tom&employees%5Bname%5D=Jane&employees%5Blocation%5D=New%20York&employees%5Bresponsiblity%5D%5Bname%5D=Thing%20B&employees%5Bresponsiblity%5D%5Bpriority%5D=9001

However what I'm getting on the server is

{
    "name":"yooo",
    "employees":{
        "name":[
            "Dave",
            "Jane"
        ],
        "location":[
            "Las Vegas",
            "New York"
        ],
        "responsiblity":{
            "name":[
                "Thing A",
                "Thing B"
            ],
            "priority":[
                "1",
                "9001"
            ],
            "manager":"Tom"
        }
    }
}

I'm not sure if this is a bug from this library, a limitation for query parameters or incorrect parsing server-side. Please let me know what you think.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions