API Github Jobs | JavaScript

 


Hoy voy a mostrarles como usar la API de Github Jobs para crear una aplicación web que nos permita buscar trabajos, lo estaremos haciendo usando Jaavascript, Axios, y Tailwind como hoja de estilos, empecemos.

Primero crearemos nuestros típico Index.html:

Ahora crearemos nuestro archivo app.js:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Github Jobs</title>
<link rel="stylesheet" href="css/tailwind.css">
</head>
<body class="bg-gray-200">
<h1 class="mt-10 text-center text-4xl font-bold">Buscador Github Jobs</h1>
<form id="formulario" class="bg-teal-500 max-w-lg mx-auto mt-10 rounded p-6">
<div>
<input
type="text"
class="w-full p-3 rounded placeholder-gray-900 "
id="busqueda"
placeholder="Búsqueda por tecnología: ej. Node.js Java o C#"
>
<input
type="submit"
value="Buscar Vacantes"
class="bg-gray-800 text-white font-bold w-full uppercase mt-5 p-3 hover:bg-gray-700 cursor-pointer"
>
</div>
</form>
<div id="resultado" class="mt-10 container mx-auto grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 items-start">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js"></script>
<script src="js/app.js"></script>
</body>
</html>
view raw index.html hosted with ❤ by GitHub

const formulario = document.querySelector('#formulario');
const resultado = document.querySelector('#resultado');
document.addEventListener('DOMContentLoaded', () => {
formulario.addEventListener('submit', validarBusqueda);
});
function validarBusqueda(e){
e.preventDefault();
const txtBusqueda = document.querySelector('#busqueda').value;
if(txtBusqueda === ''){
mostrarAlerta('El campo es obligatorio');
return;
}
// Consultar API
consultarAPI(txtBusqueda);
}
function consultarAPI(busqueda){
const gitUrl = `https://jobs.github.com/positions.json?search=${busqueda}`;
const url = `https://api.allorigins.win/get?url= ${encodeURIComponent(gitUrl)}`;
axios.get(url)
.then(respuesta => mostrarVacantes(JSON.parse(respuesta.data.contents)));
}
function mostrarVacantes(vacantes){
limpiarHTML();
console.log(vacantes);
if(vacantes.length > 0){
resultado.classList.add('grid');
// iterar
vacantes.forEach( vacante => {
const {title,type,url,company,company_url} = vacante;
resultado.innerHTML += `
<div class="shadow bg-white p-6 rounded">
<h2 class="text-2xl font-light mb-4">${title}</h2>
<p class="font-bold uppercase">Compañia: <span class="font-light normal-case">${company} </span></p>
<p class="font-bold uppercase">Web Compañia: <span class="font-light normal-case"> <a href='${company_url}' target='_blank'> ${company_url}</a> </span></p>
<p class="font-bold uppercase">Tipo de Contrato: <span class="font-light normal-case">${type} </span></p>
<a class="bg-teal-500 max-w-lg mx-auto mt-3 rounded p-2 block uppercase font-xl font-bold text-white text-center" href="${url}" target='_blank'>Ver Vacante</a>
</div>
`;
});
} else{
const noResultado = document.createElement('p');
noResultado.classList.add('text-center','mt-10', 'text-gray-600','w-full');
noResultado.textContent = 'No hay vacantes, intenta con otro término de búsqueda';
resultado.classList.remove('grid');
resultado.appendChild(noResultado);
setTimeout(() => {
noResultado.remove();
}, 3000);
}
}
function limpiarHTML(){
while (resultado.firstChild) {
resultado.removeChild(resultado.firstChild);
}
}
function mostrarAlerta(mensaje){
const error = document.querySelector('.alerta');
if(!error){
const divAlerta = document.createElement('div');
divAlerta.classList.add('bg-gray-100','p-3','text-center','mt-3','alerta');
divAlerta.textContent= mensaje;
formulario.appendChild(divAlerta);
setTimeout(() => {
divAlerta.remove();
}, 3000);
}
}
view raw app.js hosted with ❤ by GitHub
Y listo, con eso tendremos nuestra aplicación web para buscar trabajo.



Comentarios

Entradas más populares de este blog

Pequeño carrito de compras | JavaScript

CRUD ASÍNCRONO PHP-MYSQL-JQUERY