JSFiddle - React, Tailwind, and code Playground

JavaScript

//test("http://demo.ckan.org/api/3/action/group_list", {});
//test("http://demo.ckan.org/api/3/action/group_show", {"id": "qingqing"});
test("http://demo.ckan.org/api/3/action/group_show", {"id": "collectivites-locales"});
//test("http://catalog.data.gov/api/3/action/group_list", {});
test("http://catalog.data.gov/api/3/action/group_show", {"id": "law1129"});
test("http://catalog.data.gov/api/3/action/tag_show", {"id": "2010-data"});

function test(url, params) {
    _test(url, params, false);
    _test(url, params, true);
}
function _test(url, params, usePost) {
    var json = JSON.stringify(params);
    var request = new XMLHttpRequest();
    if (usePost)
    {
        request.open("POST", url, false);
    }
    else
    {
        url += '?';
        for (var p in params)
            url += p + '=' + params[p] + '&';
        request.open("GET", url, false);
    }
    //request.responseType = "text";
    //request.setRequestHeader("Content-Type", "application/json");
    request.onload = request.onerror = function (event) {
        var output = {method: usePost?'POST':'GET', url: url};
        if (usePost)
            output.params = params;
        output.status = request.status + ' ' + request.statusText;
        var r = JSON.parse(request.response);
        output.success = r.success;
        //output.result = r.result;
        output.error = r.error;
        if (typeof r == 'string')
            output.response = r;
        trace(output);
    };
    request.send(json);
}

function trace(data) {
    var str = JSON.stringify(data, null, 4);
    var frag = document.createDocumentFragment();
    var pre = document.createElement('pre');
    var text = document.createTextNode(str);
    pre.appendChild(text);
    document.body.appendChild(pre);
}