Ejemplo de uso de la API con HTML y JavaScript
En este ejemplo vamos a desarrollar código en HTML / JavaScript para acceder a los proyectos de un usuario. Este artículo asume que el lector está familiarizado con estos lenguajes y con peticiones XMLHttpRequest.
Todas las llamadas al API de ITM Platform deben incluir el token que se recibe en el login. Para ello, se declara el objeto XMLHttpRequest y se abre con una petición GET que incluye la URL del método de login «https://api.itmplatform.com/{AccountName}/login/{Email}/{Password}»
Este es el código más básico
var xhttp = new XMLHttpRequest(); xhttp.open("GET", baseURL + environment + '/login/' + email + '/' + password, true); xhttp.send()
Una vez enviada la petición, hay que escuchar el evento onreadystatechange que proporcionará el resultado. Puesto que XMLHttpRequest es una petición asíncrona, el hilo de ejecución continuará sin esperar a que ITM Platform responda, proporcionando una buena experiencia de usuario.
xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { //If the responde is okay var token = JSON.parse(xhttp.responseText); //Now let's get the projects for the user getProjects(token["Token"], environment); } };
En este ejemplo, llamamos a la función getProjects() una vez disponemos del token
La llamada a getProjects() debe incluir el token a través de la función setRequestHeader:
xhttp.setRequestHeader("Token", token);
A continuación se muestra el código completo de una página HTML que solicita credenciales y muestra los proyectos del usuario
<!-- ** Basic example on using ITM Platform API methods. ** Used for illustrations purposes only. ** TIP: If you need to test it from your local computer, you will get a CORS error ** to bypass it for *testing purposes only*, run Chrome disaling web security "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir=c:\folder-where-your-html-file-is --> <html> <head> </head> <body style="font-family: Arial, Helvetica, sans-serif; color:#333"> <div id="login" style="border-style: solid; border-color: #333; border-width: 2px; border-radius: 3px; padding: 10px; width:600px;"> <p>Please enter your ITM Platform's credentials</p> Company's environment: <br/> <input type="text" id="environment" size="35" placeholder="after https://app.itmplatform.com/XXX" onkeyup="showURL(this.value)"> <br> <span id="url" style="font-size: 0.8em"></span> <br/><br/> Your user name:<br/> <input type="text" id="email" size="35"placeholder="your email address"> <br/> <br/>Password:<br/> <input type="password" id="password" size="35" placeholder="your email address"> <br/> <input type="button" value="Go get my projects!" style="margin:20px" onclick="login(environment.value, email.value, password.value)"> </div> <div id="results"></div> <script> function login(environment, email, password) { // Check for credentials if (environment == undefined || email == undefined || password == undefined) { document.getElementById("results").innerHTML = "Please fill in all fields" throw ("Can't login without credentials") } // we start by loggin in document.getElementById("results").innerHTML = "Logging in..." const baseURL = "https://api.itmplatform.com/" var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { //If the responde is okay var token = JSON.parse(xhttp.responseText); //Now let's get the projects for the user getProjects(token["Token"], environment); } else if (this.readyState == 4) { // if anything went wrong document.getElementById("results").innerHTML = "Sorry, couldn't log in. Check your credentials :/ " } }; xhttp.open("GET", baseURL + environment + '/login/' + email + '/' + password, true); try { xhttp.send(); } catch (e) { throw e } } function getProjects(token, environment) { const baseURL = "https://api.itmplatform.com/" const myProjects = '?URL=UserPages/MyProjects.aspx' // this is used to get "My Projects" (.../projects/?UserPages/MyProjects.aspx) var html; // this variable will hold the HTML with the project list document.getElementById("results").innerHTML = "Retrieving your projects..." var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { var myProjects = JSON.parse(xhttp.responseText); // Converts the response in a JSON object if (myProjects.length == 0) { document.getElementById("results").innerHTML = "You have no porjects assigned" } else { html = "These are the projects you are assigned to: <br><ul>"; for (p = 0; p < myProjects.length; p++) { html = html + "<li>" + myProjects[p].ProjectName + "</li>" } html = html + "</ul>" document.getElementById("results").innerHTML =html; } } else if (this.readyState == 4 && this.status != 200) { document.getElementById("results").innerHTML = "Sorry, couldn't get your projects :/ " console.log(xhttp); } }; xhttp.open("GET", baseURL + environment + encodeURI('/projects/' + myProjects), true); console.log("Token: " + token); xhttp.setRequestHeader("Token", token); console.log(xhttp); xhttp.send(); } // This just shows the URL as the user types function showURL(value){ document.getElementById("url").innerHTML="https://app.itmplatform.com/" + value; } </script> </body> </html>
El resultado esperado de esta sencilla página es el siguiente:
En la documentación de la API encontrará todos los métodos necesarios para realizar cualquier función en ITM Platform.