Prerequisite
- Awesome knowledge of NodeJS
- Reason to use NodeJS's HTTP.Request
- SublimeText to get awesome view of the codes below
There are two ways on doing this, one with the help of "underscore" library and second is without it.
With Underscore Library
Install this wonderful library with NPM (Node Package Manager)
npm install underscoreAdd this on your dependencies section (often on the top of your script page)
var _ = require("underscore");And this wherever you want
var httpRequest = function(link, headers, body) { // remove this if you already used it on the dependencies section var url = require("url"), http = require("http"); // Parse the link so it will become a URL object link = url.parse(link); // generate the options which will be used by the Http.Request later on var options = { host : link.hostname , port : link.port ? link.port : link.protocol == "https:" ? 443 : 80 , path : link.path } // Predefined the headers (you can change it anyway you want) options.headers = { host : link.hostname , 'user-agent' : 'Your User Agent Here' , 'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' , 'Accept-Language' : 'en-GB,en-US;q=0.8,en;q=0.6' , 'content-length' : body ? body.length : "" } // Extend the Options's Headers so that we can add in custom headers if (headers) _.extend(options.headers, headers); // Remove empty headers to reduce bandwidth and unwanted errors for (var element in options.headers) if (!!!options.headers[element]) delete options.headers[element]; // Request the data (Http.Request) var request = http.request(options, function(response) { // This event will be triggered on arrival of data response.on("data", function(data) { // more code here. }); // This event will be triggered on response finished response.on("end", function(err) { // more code here. }); }); // This will be triggered if any errors occurred while requesting // you can use this to handle unwanted errors request.error(function(error) { // more code here. }); // End the request to make NodeJS start requesting // It will request depending on the body we specified request.end(body ? body : ""); }
Without Underscore Library
Just change a part of the above code from
if (headers) _.extend(options.headers, headers);To
if (headers) for (var element in headers) option.headers[element] = headers[element];
That's it! Enjoy! If you have anything in your mind, just leave it on the comment section below.
No comments:
Post a Comment