Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG][Typescript][Axios/Fetch] Wrong generated code for array of items using FormData (multipart/form-data) #18853

Closed
5 tasks done
jeandonaldroselin opened this issue Jun 4, 2024 · 0 comments

Comments

@jeandonaldroselin
Copy link
Contributor

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

I use open api spec 3 to define api to define two attributes :

  • mediasToAdd which is an array of files to upload

  • mediasToDelete which is an array of files uuids to delete


I use a Typescript Axios in one project and Typescript Fetch in another project,

Theses projects are consuming almost the same (PHP) API endpoints.

But the typescript-axios and typescript-fetch generators generates a code that does not build properly theses array attributes.

This is the generated code :

# For typescript axios
formParams.append('mediasToAdd', element as any);
formParams.append('mediasToDelete', element as any);
# For typescript fetch
localVarFormParams.append('mediasToAdd', element);
localVarFormParams.append('mediasToDelete', element);

This parameters is not considered as array when submitting to a PHP API.

But it should be :

# For typescript axios
formParams.append('mediasToAdd[]', element as any);
formParams.append('mediasToDelete[]', element as any);
# For typescript fetch
localVarFormParams.append('mediasToAdd[]', element);
localVarFormParams.append('mediasToDelete[]', element);

the consequence is that on API side theses values are received as simple attributes instead as arrays.


Following the previous screenshot the API will receive :

  • mediasToAdd as a single binary (latest value provided)

  • mediasToDelete as a single string (latest value provided)

openapi-generator version

I use exactly @openapitools/openapi-generator-cli@1.0.18-5.0.0-beta2

OpenAPI declaration file content or url

Capture d’écran 2024-04-24 à 17 54 45

Generation Details
Steps to reproduce
Related issues/PRs
Suggest a fix

The problem is located in theses files =>

jeandonaldroselin added a commit to jeandonaldroselin/openapi-generator that referenced this issue Jun 4, 2024
…ipart/form-data request for axios and fetch typescript clients
jeandonaldroselin added a commit to jeandonaldroselin/openapi-generator that referenced this issue Jun 4, 2024
…ipart/form-data request for axios and fetch typescript clients
jeandonaldroselin added a commit to jeandonaldroselin/openapi-generator that referenced this issue Jun 4, 2024
…ipart/form-data request for axios and fetch typescript clients
jeandonaldroselin added a commit to jeandonaldroselin/openapi-generator that referenced this issue Jun 13, 2024
…ipart/form-data request for axios and fetch typescript clients
jeandonaldroselin added a commit to jeandonaldroselin/openapi-generator that referenced this issue Jun 13, 2024
…ipart/form-data request for axios and fetch typescript clients
jeandonaldroselin added a commit to jeandonaldroselin/openapi-generator that referenced this issue Jun 13, 2024
…ipart/form-data request for axios and fetch typescript clients
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant