Desenvolvendo uma aplicação

Desenvolvendo uma aplicação

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.

Did you find this article valuable?

Support Áreadev by becoming a sponsor. Any amount is appreciated!