I’ve seen lately that some of you struggle to get the Request API to send what they want like I did some time ago. Therefore I made this wrapper of the Request API to help with the encoding and setting the correct mime type.
It does that for these types:
- json (application/json)
- forms (application/x-www-form-urlencoded)
- Data (the Scriptable API) (application/octet-stream)
- strings (text/plain)
You can do everything what you can do with the original Request API. Even if it gets new properties, they will also be available on this wrapper.
This also fixes ignored properties when assigning them with the . operator:
let req = new Request(url);
req.header = {};
req.header.foo = "bar";
log(req.header); // prints "{}"
Usage:
Use it like the normal Request API, but use the properties json
and form
for the first two content types listed above and body
for all other
// import this script
let BetterRequest = importModule("BetterRequest");
// use it
let req = new BetterRequest("https://httpbin.org/post");
req.method = "post";
req.json = {
foo: "bar"
};
let res = await req.loadJSON();
I’ve tested it a little and I’ve also written some tests at the bottom of the script. To run them, simply run this script on its own and it will print the results in the console.