1.0.5 • Published 6 years ago
send-request v1.0.5
Send Request
Lightweight HTTP client for Node.
Installation
$ npm install send-requestUsage
Send HTTP GET request:
const sendRequest = require("send-request");
(async () => {
const response = await sendRequest("https://httpbin.org/json");
console.log(`Status Code: ${response.statusCode}`);
console.log({ headers: response.headers });
console.log(response.body); // Response as a string
// If response's content type is a JSON, you get the parsed object.
console.log(response.json);
})();Recipes
Handling Error
const sendRequest = require("send-request");
(async () => {
try {
const response = await sendRequest("https://httpbin.org/status/400");
} catch(error) {
console.log(error.message);
// If it's an HTTP error, it will have response property.
if (error.response) {
console.log(error.response.statusCode); // 400
console.log(error.response.statusMessage);
console.log(error.response.headers);
console.log(error.response.body);
}
}
})();Send HTTP POST Request with Body
If you don't set the content-type and content-length headers, it will be automatically added. The content-type will be set to application/x-www-form-urlencoded.
const sendRequest = require("send-request");
(async () => {
const response = await sendRequest("https://httpbin.org/anything", {
method: "POST",
body: {
foo: "bar"
}
});
console.log(response.body);
})();Send HTTP Request with JSON Body
If you don't set the content-type and content-length headers, it will be automatically added. The content-type will be set to application/json.
const sendRequest = require("send-request");
(async () => {
const response = await sendRequest("https://httpbin.org/anything", {
method: "POST",
body: {
foo: "bar"
},
json: true // Must be set to true
});
console.log(response.json);
})();Sending File with FormData
You pass the FormData instance as a body. If you don't set the content-type and content-length headers, it will be automatically added. The content-type will be set to multipart/form-data. The json option won't have any effect.
const fs = require("fs");
const sendRequest = require("send-request");
const FormData = require("form-data");
(async () => {
const file = fs.createReadStream("./test.txt");
const form = new FormData();
form.append("foo", "bar");
form.append("my_file", file);
const response = await sendRequest("https://httpbin.org/anything", {
method: "POST",
body: form
});
console.log(response);
})();API
sendRequest(url, [{
method,
headers,
auth: {
username,
password
},
body,
json,
encoding
}])Parameters
url(String): The URL to send the HTTP request to.method(optionalString): The HTTP method to use, default toGET.headers(optionalObject): The request headers to send.auth.username(optionalString): The username for HTTP basic auth.auth.password(optionalString): The password for HTTP basic auth.body(optionalObject|FormData): The request body to send. It can be a plain JavaScript object or an instance ofFormData.json(optional Boolean): Set totrueif you want to send the request body withapplication/jsoncontent type. Default tofalse, which means that the request body will be sent asapplication/x-www-form-urlencoded. Note that you can still override the content type using theheadersoption.encoding(optionalString|Null): The encoding to decode the incoming response. If set tonull, the response's body will be aBufferinstance.
Returns
It returns a Promise which when resolved contains a response object. Here's an example of a reponse object:
{
statusCode: 200,
statusMessage: "OK",
headers: {
"content-type": "application/json"
},
body: '{"foo": "bar"}',
json: {
foo: "bar"
}
}statusCode(Number): The HTTP status code.statusMessage(Number): The HTTP status message (reason phrase).headers(Object): The response's headers.body(String): The response's body.json(Object): The parsed JSON body. It only exist if the response's content type isapplication/json.