apollographql / datasource-rest

A caching data source for REST APIs
MIT License
39 stars 20 forks source link

Post method is not able to properly download a Stream #356

Open Irene350 opened 1 month ago

Irene350 commented 1 month ago

Hi I'm not sure if this is an issue or I'm doing something wrong. I'm trying to call an external API to download a PDF file that I will later encode into a base64 string.

I used .post from RESTDataSource class. But the string I receive is not correct.

I tried the same using axios and everything is perfectly working. This is the working code:

const response = await axios({
        method: "post",
        url: `${this.baseURL}/storefrontapi/hot/orders/${orderId}/export/pdf`,
        headers: {
          Accept: "application/json-patch+json, */*",
          authorization: `Bearer ${this.context.token}`,
          "Content-Type": "application/pdf",
        },
        responseType: "arraybuffer", // Ensure binary data is handled correctly
      })

This is the not working call using RESTDataSource method.

const response = await this.post(`storefrontapi/hot/orders/${orderId}/export/pdf`, {
        headers: {
          Accept: "application/json-patch+json, */*",
          authorization: `Bearer ${this.context.token}`,
          "Content-Type": "application/pdf",
        },
      })

I can't use responseType here because is not supported, I didn't find any way to pass it to the post function.