Tutorial - How to Create a Content-type, and Configure User Permissions for REST APIs
Introduction In this post, we will see how we can create a content type. And…
January 15, 2022
I was trying to upload images to my backend using rest APIs. I was using form-data
library with axios, so that I can pass authorization header as well.
I was getting error: Request Entity Too Large
, with http Status of 413
.
Earlier Code was:
const FormData = require("form-data");
const filepath = 'my-filepath';
let fileToUpload = new FormData();
fileToUpload.append("files", fs.createReadStream(filepath));
await axios.post(
`${this._props.host}/upload`,
fileToUpload,
{
headers: {
Authorization: `Bearer ${this._jwt}`
},
}
);
Error:
Request failed with status code 413
You need to pass a header Content-Type
with value of multipart/form-data;
and a unique boundary
.
When using form-data
library. It also gives you a method: getHeaders()
.
The code becomes:
const FormData = require("form-data");
const filepath = 'my-filepath';
let fileToUpload = new FormData();
fileToUpload.append("files", fs.createReadStream(filepath));
await axios.post(
`${this._props.host}/upload`,
fileToUpload,
{
headers: {
...fileToUpload.getHeaders(),
Authorization: `Bearer ${this._jwt}`
},
}
);
If you print fileToUpload.getHeaders()
, you will get
'content-type': 'multipart/form-data; boundary=--------------------------151840689896304164188529'
And, it works.
In simple terms, you know that the server knows that multiple parameters are separated by an ampersand (&
) character. And, if user need to pass the ampersand (&
) character in the request parameters, then it have to be encoded.
But, how the server will know when to read the file data and when to stop (start and end) in the case of multipart/form-data
.
It has to be similar to ampersand philosophy or contract.
This unique boundary is used for that purpose. It is to tell the server how to split the data it receives in multipart/form-data
. So, what is unique about it. This value has to be unique in the request. i.e. It should not come within the content of the request or the payload.
Introduction In this post, we will see how we can create a content type. And…
Introduction In your backend and frontend projects, you always need to deal with…
Introduction In this post, we will see: create a test user Authenticate it via…
Introduction In this post, we will see How to load external images to your next…
Introduction In this step-by-step tutorial, we will setup strapi headless CMS…
Introduction This post is in contuation of our previous post: How to use Draft…
Introduction In this post we will see following: How to schedule a job on cron…
Introduction There are some cases, where I need another git repository while…
Introduction In this post, we will see how to fetch multiple credentials and…
Introduction I have an automation script, that I want to run on different…
Introduction I had to write a CICD system for one of our project. I had to…
Introduction Java log4j has many ways to initialize and append the desired…