datasource-rest
datasource-rest copied to clipboard
Post method is not able to properly download a Stream
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.
I guess the 2nd arg in this.post is not correct. Check syntax how to pass headers in RESTDataSource