# APIlite A set of tools to simplify the work of creating backend APIs for your frontend projects. Includes tutorials, patterns and practical examples for creating projects based on REST APIs. ## Basic usage For example, we create an API for calculator. So we create class `APIcalculator` and store in file `test/APIcalculator.php` where we defined each actions for API as public method. ```php To connect to the API from TypeScript (e.g. Vue application) it is possible to download the backend script ```ts /** * Generated by APIlite * https://gitea.tpsoft.org/TPsoft.org/APIlite * * 2025-05-28 15:44:07 */ export const backend = { endpont: window.location.origin + "APIcalculator.php", /* ---------------------------------------------------- * General API call */ call(method, data, callback) { var xhttp = new XMLHttpRequest(); xhttp.withCredentials = true; xhttp.onreadystatechange = function() { if (this.readyState == 4) { if (this.status == 200) { if (callback != null) callback(JSON.parse(this.responseText)); } else { if (callback != null) callback({'status': 'ERROR', 'message': 'HTTP STATUS ' + this.status}); } } } var form_data = new FormData(); Object.keys(data).forEach(key => { let val = data[key]; if (typeof val == 'object') val = JSON.stringify(val); form_data.append(key, val); }); xhttp.open('POST', this.endpont + '?action=' + method); xhttp.send(form_data); }, callPromise(method, data) { return new Promise((resolve, reject) => { this.call(method, data, function(response) { if (response.status == 'OK') { resolve(response.data); } else { reject(response.msg); } }); }) }, /* ---------------------------------------------------- * API actions */ help() { return this.callPromise('__HELP__', {}); }, add(a, b) { return this.callPromise('add', {a: a, b: b}); }, subtract(a, b) { return this.callPromise('subtract', {a: a, b: b}); }, multiply(a, b) { return this.callPromise('multiply', {a: a, b: b}); }, divide(a, b) { return this.callPromise('divide', {a: a, b: b}); }, }; ``` These outputs can also be generated in the command line as follows * for HTML`$> php APIcalculator.php --html` * for TypeScript`$> php APIcalculator.php --typescript`