acacode / swagger-typescript-api

Generate the API Client for Fetch or Axios from an OpenAPI Specification
MIT License
3.08k stars 338 forks source link

Not possible to set responseType to blob #767

Open kispuding opened 3 weeks ago

kispuding commented 3 weeks ago

Hi, I am experiencing an issue when trying to generate client from drf's @extend_schema decorator. My endpoint returns a response which contains an xlsx file, I am only able to process that if I set the generated client's responseType manually to blob, but it is set incorrectly to json. I've found many suggestions to set x-in-file in the decorator, I even tried to set it as header, but none of the suggestions works. Here is how I currently specify the response in extend_schema decorator: ` responses={

        200: {
            'x-is-file': 'true',
            'content': {
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': {
                    'schema': {
                        'type': 'string',
                        'format': 'binary'
                    }
                }
            },
            'headers': {
                'x-is-file': {
                    'description': 'Indicates if the response is a file',
                    'type': 'string',
                    'example': 'true'
                }
            },
        }
    }`

and this is generated:

` this.request<File, any>({

   path: '/api/v1/object/export/',
    method: "GET",
    query: query,
    secure: true,
    format: "json",
    ...params,
  }),`

Rewriting this manually to: `this.request<File, any>({

    path: '/api/v1/object/export/',
    method: "GET",
    query: query,
    secure: true,
    format: "blob",
    ...params,
  }),`

works as intended. Any ideas where the problem should be? Many thanks in advance.