Easy HTTP Library

easyhttp.js

// ES5 Object Oriented Library so we use prototypes instead of classes

//Create a constructor
function easyHTTP(){
    this.http = new XMLHttpRequest();
}

// 4 different prototype method

// Make an HTTP GET Request
easyHTTP.prototype.get = function(url, callback){
    this.http.open('GET', url, true);

    let self = this;
    self.http.onload = function(){
        if(self.http.status === 200){
            callback(null, self.http.responseText);
        } else{
            callback('Error' + self.http.status);
        }
    }

    self.http.send();
}

// Make an HTTP POST Request
easyHTTP.prototype.post = function(url, data, callback ){
    this.http.open('POST', url, true);

    this.http.setRequestHeader('Content-type', 'application/json');

    let self = this;
    self.http.onload = function(){
            callback(null, self.http.responseText);
    }

    this.http.send(JSON.stringify(data));
}

// Make an HTTP PUT Request
easyHTTP.prototype.put = function(url, data, callback ){
    this.http.open('PUT', url, true);

    this.http.setRequestHeader('Content-type', 'application/json');

    let self = this;
    self.http.onload = function(){
            callback(null, self.http.responseText);
    }

    this.http.send(JSON.stringify(data));
}

// Make an HTTP DELETE Request 
easyHTTP.prototype.delete = function(url, callback){
    this.http.open('DELETE', url, true);

    let self = this;
    self.http.onload = function(){
        if(self.http.status === 200){
            callback(null, 'Post Deleted');
        } else{
            callback('Error' + self.http.status);
        }
    }

    self.http.send();
}

app.js

// Instantiate
const http = new easyHTTP;

// Get Posts
http.get('https://jsonplaceholder.typicode.com/posts/', 
function(err, posts){
    if (err) {
        console.log(err);
    } else {
        console.log(posts);
    }
});

// Get Single Posts
http.get('https://jsonplaceholder.typicode.com/posts/1', 
function(err, posts){
    if (err) {
        console.log(err);
    } else {
        console.log(posts);
    }
});

// Create Data
const data = {
    title : 'Custom Post',
    body : 'This is a custom post'
};

/* // Create Post
http.post('https://jsonplaceholder.typicode.com/posts', data, function (err, post){
    if (err) {
        console.log(err);
    } else {
        console.log(post);
    }
}); */

// Update Posts
http.put('https://jsonplaceholder.typicode.com/posts/5', 
data, function (err, post){
    if (err) {
        console.log(err);
    } else {
        console.log(post);
    }
});

// Delete Posts
http.delete('https://jsonplaceholder.typicode.com/posts/1', 
function(err, response){
    if (err) {
        console.log(err);
    } else {
        console.log(response);
    }
});
Was this page helpful?

Reader Interactions

Leave a Reply

Your email address will not be published. Required fields are marked *