I think I'm missing something about http and https requests
I have a variable that contains a URL, for example:
http(s)://website.com/a/b/file.html
I would like to know if there's a easy way to make a request to that URI to get the data
To make a http(s)Request, here's what I have to do now:
website.com
and `/a/b/file.htmlIs this a must or are they easier solutions that don't involve getting out the hostname and path, and testing if the site is in http or https ?
Edit: I can't use http.get as I need to put some specific options
In order to get all components out of URL you need to parse it. Node v0.10.13 has stable module for it: url.parse
This is simple example how to do so:
var q = url.parse(urlStr, true);
var protocol = (q.protocol == "http") ? require('http') : require('https');
let options = {
path: q.pathname,
host: q.hostname,
port: q.port,
};
protocol.get(options, (res) => {...
For those ending up here, protocol
includes :
, and pathname
does not include search
so it must be added manually. Parameters shouldn't be parsed as they are not needed (so you can save computing time :)
Also it's not really a best practice to require inside a function and probably this code will end up inside a function so having all this improvements, so I would rewrite the answer to something like this:
import * as url from 'url';
import * as https from 'https';
import * as http from 'http';
const uri = url.parse(urlStr);
const { request } = uri.protocol === 'https:' ? https : http;
const opts = {
headers, // Should be defined somewhere...
method: 'GET',
hostname: uri.hostname,
port: uri.port,
path: `${uri.pathname}${uri.search}`,
protocol: uri.protocol,
};
const req = request(opts, (resp) => { ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With