Table of contents
Vamos implementar uma aplicação simples onde iremos consumir um serviço externo. Utilizaremos a API http://www.omdbapi.com/ para listar os filmes existentes do serviço, bora codar =)
Passo 1
Primeiramente vamos gerar um token no serviço para podermos consumir a API sem nenhum problema. Acesse o link: http://www.omdbapi.com/apikey.aspx
Marque a opção FREE e insira seu e-mail, nome, sobrenome e alguma palavra no campo use.
Após fazer o submit verifique se o token e o link de ativação chegou no seu e-mail.
Após clicar no link de ativação automaticamente abrirá uma aba como essa abaixo:
Aguarde uns minutos e click no link recebido no e-mail
OMDb API: http://www.omdbapi.com/?i=tt3896198&apikey=suakey
depois de clicado abrirá uma aba com um json igual a imagem abaixo:
Ufa! Pronto sua KEY está ativada e pronto para utilizar o serviço omdb.
Passo 2
Como vamos pesquisar pelo nome do filme utilizaremos o parâmetro s
http://www.omdbapi.com/?s=nome-do-filme&apikey=sua-key
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Aplicação Filmes</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<main>
<header class="header-movies">
<div class="container">
<h1 class="header-movies__title">Areaflix</h1>
</div>
</header>
<section class="section-movies">
<div class="container">
<div class="app-movies">
<h2 class="app-movies__title">Filmes, séries e muito mais. Sem limites.</h2>
<h3 class="app-movies__subtitle">Assista onde quiser. Cancele quando quiser.</h3>
<p class="app-movies__msg">Pronto para assistir? Informe seu email para criar ou reiniciar sua assinatura.</p>
<form class="form" method="GET">
<input type="text" placeholder="Buscar filme" name="movie" class="form__input" >
<input type="submit" class="form__submit" value="Vamos lá">
</form>
</div>
<ul class="app-movies-all" id="movies"></ul>
</div>
</section>
</main>
<script src="script.js"></script>
</body>
</html>
CSS
* {
margin:0;
padding:0;
}
body {
background-color: #000;
}
main {
background-image:url('img/bg.jpg');
background-repeat:no-repeat;
background-size:cover;
background-position:center;
position:absolute;
width:100%;
height:100%;
}
main:after{
background-color:rgba(0, 0, 0, 0.68);
content:'';
height:100%;
left:0;
position:absolute;
top:0;
width:100%;
}
.header-movies {
float:left;
position: relative;
padding: 15px 0;
width:100%;
z-index: 9;
}
.header-movies__title {
color:red;
font-family:'arial',sans-serif;
font-size:40px;
text-shadow:2px 2px #000000;
}
.section-movies {
align-items:center;
display:flex;
justify-content:center;
padding-bottom:60px;
width:100%;
}
.container {
margin-left:auto;
margin-right:auto;
max-width:90%;
padding-left:15px;
padding-right:15px;
width:100%;
}
.app-movies {
align-items:center;
display:flex;
flex-direction:column;
position:relative;
margin: 60px 0;
z-index:9;
}
.app-movies__title {
color:white;
font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;
font-size:54px;
max-width:70%;
text-align:center;
}
.app-movies__subtitle {
color:white;
font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;
font-size:25px;
font-weight: 300;
margin:20px 0 30px;
}
.app-movies__msg {
color:white;
font-size:18px;
font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;
margin-bottom: 20px;
}
.app-movies-all {
display:grid;
grid-gap:30px;
grid-template-columns: repeat(auto-fit, 14.46%);
position: relative;
z-index: 9;
}
.app-movies-all__card {
display: flex;
flex-direction: column;
position: relative;
top: 0;
transition: all .2s ease-in-out;
}
.app-movies-all__card:hover {
top: -5px;
}
.app-movies-all__figure {
height: 230px;
box-shadow: 0 0px 9px 3px rgb(255,255,255,0.23);
}
.app-movies-all__thumb {
width: 100%;
height: 100%;
object-fit: cover;
}
.app-movies-all__legend {
display: flex;
flex-direction: column;
}
.app-movies-all__year {
color:rgba(255,255,255,0.76);
font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;
font-size:13px;
background-color:#e50914;
max-width:30px;
padding: 4px 10px;
line-height: 1;
margin: 8px 0;
border-radius: 2px;
}
.app-movies-all__title {
color:white;
font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;
font-size:16px;
}
.form {
display:flex;
justify-content:center;
width:100%;
}
.form__input {
border: 0;
background-color:#fff;
border-radius:0;
padding:15px 20px;
width:35%;
}
.form__submit {
background-color:#e50914;
border:0;
cursor:pointer;
color:#fff;
font-size:25px;
padding:15px 30px;
transition: all .2s ease-in-out;
}
.form__submit:hover {
background-color:#c70913;
}
@media only screen and (max-width: 480px) {
.app-movies {
margin: 30px 0;
}
.header-movies__title {
text-align: center;
}
.app-movies__title {
font-size:40px;
max-width:100%;
}
.app-movies__subtitle {
text-align: center;
}
.app-movies__msg {
text-align: center;
}
.form {
overflow: hidden;
flex-direction: column;
}
.form__input {
width: 100%;
margin-bottom: 5px;
}
.form__submit {
font-size: 16px;
}
.app-movies-all {
grid-gap:15px;
grid-template-columns: repeat(auto-fit, 47%);
}
.app-movies-all__figure {
height: 190px;
}
}
JavaScript
function handler(e) {
e.preventDefault();
let movie = document.querySelector('.form__input').value;
if(movie) {
const _url = `http://www.omdbapi.com/?s=${movie}&apikey=b58710e2`;
const _options = {
method: 'GET',
mode: 'cors',
redirect: 'follow',
cache: 'default'
}
fetch(_url, _options)
.then(function(response) {
// Tratamento de erro
if(!response.ok) throw new Error('Erro ao executar requisição');
// Retorne um objeto no formato json
return response.json();
})
// receber dados
.then(function(data) {
//console.log(data);
let newContent = '';
for(let i = 1; i < data.Search.length; i++) {
newContent += `<li class="app-movies-all__card">`;
newContent += `<figure class="app-movies-all__figure">`;
newContent += `<img class="app-movies-all__thumb" src="${data.Search[i].Poster}"/>`;
newContent += `</figure>`;
newContent += `<legend class="app-movies-all__legend">`;
newContent += `<span class="app-movies-all__year">${data.Search[i].Year}</span>`;
newContent += `<h2 class="app-movies-all__title">${data.Search[i].Title}</h2>`;
newContent += `</legend>`;
newContent += `</li>`;
}
document.getElementById('movies').innerHTML = newContent;
})
} else {
alert('Digite um nome de filme!');
}
}
window.onload = () => {
const submit = document.querySelector('.form__submit');
submit.addEventListener('click', handler);
}
Conclusão
O artigo oferece um guia abrangente para criar uma aplicação web simples que utiliza a API do OMDB para buscar e exibir informações sobre filmes e séries. Ao seguir os passos fornecidos, os desenvolvedores podem facilmente obter uma chave de API gratuita e começar a fazer solicitações à API para obter dados sobre filmes com base em seus nomes.
Além disso, o artigo destaca a importância de entender os parâmetros de pesquisa disponíveis na API, como o parâmetro "s" para pesquisar por título de filme. A interface da aplicação é projetada de forma simples, mas eficaz, com foco na usabilidade e na responsividade em diferentes dispositivos.
Ao criar essa aplicação, os desenvolvedores podem ganhar experiência prática na integração de APIs de terceiros em projetos web, o que é uma habilidade valiosa no mundo do desenvolvimento de software. Essa experiência pode ser aplicada em uma variedade de cenários, desde a criação de aplicativos de entretenimento até a integração de serviços de terceiros em aplicativos corporativos.
Em resumo, o artigo oferece uma introdução acessível e prática ao uso de APIs externas em desenvolvimento web, capacitando os desenvolvedores a explorar e integrar uma variedade de serviços em seus próprios projetos.