datasource-rest icon indicating copy to clipboard operation
datasource-rest copied to clipboard

Post method is not able to properly download a Stream

Open Irene350 opened this issue 1 year ago • 1 comments

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.

Irene350 avatar Sep 19 '24 13:09 Irene350

I guess the 2nd arg in this.post is not correct. Check syntax how to pass headers in RESTDataSource

sailesh97 avatar Dec 07 '24 17:12 sailesh97