Skip to content

Hardcoded Content-Type causes issues with some endpoints #153

Closed
@po5i

Description

@po5i

Hello team! Thanks for sharing this great library. We're currently trying it for our development process.

Context

To perform API requests, we can make use of the Content-Type header to tell the API the media type of the payload.

When the payload complies with the FormData format, multipart/form-data should be the value of this header. According to the documentation, a boundary is required. Otherwise, the API won't work as expected:

Content-Type: multipart/form-data; boundary=something

So if that's the case, it's better to leave the Content-Type header empty.

Current scenario

The generator creates a HttpClient class with the following baseApiParams attribute similar like this example:

  private baseApiParams: RequestParams = {
    credentials: "same-origin",
    headers: {
      "Content-Type": "application/json",
    },
    redirect: "follow",
    referrerPolicy: "no-referrer",
  };

I can override the header when invoking the client's method if my endpoint accepts multipart/form-data:

await slotClient.patchEspApi(slot.id, values, {
    headers: {
        Authorization: loginInfo.token,
       "Content-Type": "multipart/form-data"
    },
});

I don't have the boundary information which can lead to the issue described in the previous section.

If I remove the header, the request is sent with application/json type which is unwanted.

In any case, I can't remove the header in the final request causing the API don't understand the form data.

Proposed solution

My hot-fix is to remove the hardcoded value of "Content-Type": "application/json", from the generated HttpClient class.

I'm not sure if I can use it in a way that removes completely the header. But I think you can update the generator tool to not hardcode that header in the HttpClient class.

Let me know your thoughts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions