Início
Alt + H
Logo Logo

Showcase

HawAPI: Explore o mundo de Stranger Things usando essa API

Tags 6 min de leitura Comentários
Post - HawAPI: Explore o mundo de Stranger Things usando essa API

Sumário

Mostrar conteúdo

Introdução

Enquanto aprendia sobre desenvolvimento Backend com Java e Spring Boot, decidi criar um projeto simples, mas não tão simples. A ideia principal era desenvolver uma API parecida com PokeAPI - Uma API de Pokémone SWAPI - Uma API de Star Wars.

Na época, a quarta temporada de Stranger Things havia sido lançada, e eu não encontrei uma API interessante sobre a série. Defini algumas características essenciais para o projeto:

  1. Ser Open Source
  2. Suportar múltiplos idiomas
  3. Ter um bom suporte a filtros

O que é HawAPI

HawAPI é uma API Gratuita e Open Sourceprojetada para a série Stranger Things. Ela oferece várias informações sobre a série, incluindo atores, personagens, episódios, jogos, localizações e temporadas, por meio de uma API RESTful que permite acesso a esses dados.

Todas essas informações estão disponíveis via uma API RESTful implementada com Java (Spring Boot) + PostgreSQL e servida em JSON, facilitando a criação de aplicativos desktop, web e mobile - HawAPI/docs

O nome HawAPI vem de:

  • Haw: Referindo-se a Hawkins, a cidade rural fictícia apresentada em Stranger Things.
  • API: Uma abreviação para Application Programming Interface (Interface de Programação de Aplicações, em português).

Internacionalização (i18n)

O suporte a múltiplos idiomas era uma característica fundamental do projeto desde o início.

A versão atual do projeto suporta apenas Inglês (en-US) e Português (pt-BR). Em breve, com o lançamento da versão 1.3.0, ela também oferecerá suporte para Francês (fr-FR) e Espanhol (es-ES).

Escopoen-USpt-BRfr-FRes-ES
Atores
Personagens
EpisódiosSimSimEm breve!Em breve!
JogosSimSimEm breve!Em breve!
LocaisSimSimEm breve!Em breve!
TemporadasSimSimEm breve!Em breve!
Trilhas

Exemplos de respostas:

1
{
2
"uuid": "bce28964-fcfa-4a8c-9df0-413d4648d661",
3
"href": "/api/v1/episodes/bce28964-fcfa-4a8c-9df0-413d4648d661",
4
"sources": [
5
"https://www.netflix.com/title/80057281"
6
],
7
"thumbnail": "https://s6.imgcdn.dev/xtSpy.jpg",
8
"title": "The Bathtub",
9
"description": "Eleven struggles to reach Will, while Lucas warns that \"the bad men are coming.\" Nancy and Jonathan show the police what Jonathan caught on camera.",
10
"language": "en-US",
11
"duration": 2580000,
12
"season": "/api/v1/seasons/3b980ad3-aef8-4663-a7a9-64cb4979500a",
13
"created_at": "2023-07-23T20:19:29.908",
14
"updated_at": "2023-07-23T20:19:29.908",
15
"episode_num": 7,
16
"next_episode": "/api/v1/episodes/cf90565d-c906-4e2c-a992-b190b5d117f8",
17
"prev_episode": "/api/v1/episodes/b664d023-2f2e-4d11-8af7-00d21bd565dd"
18
}
1
{
2
"uuid": "bce28964-fcfa-4a8c-9df0-413d4648d661",
3
"href": "/api/v1/episodes/bce28964-fcfa-4a8c-9df0-413d4648d661",
4
"sources": [
5
"https://www.netflix.com/title/80057281"
6
],
7
"thumbnail": "https://s6.imgcdn.dev/xtSpy.jpg",
8
"title": "A banheira",
9
"description": "Onze tenta chegar a Will, mas Lucas dá o alerta de perigo. Nancy e Jonathan mostram à polícia as imagens capturadas pela câmera.",
10
"language": "pt-BR",
11
"duration": 2580000,
12
"season": "/api/v1/seasons/3b980ad3-aef8-4663-a7a9-64cb4979500a",
13
"created_at": "2023-07-23T20:19:29.908",
14
"updated_at": "2023-07-23T20:19:29.908",
15
"episode_num": 7,
16
"next_episode": "/api/v1/episodes/cf90565d-c906-4e2c-a992-b190b5d117f8",
17
"prev_episode": "/api/v1/episodes/b664d023-2f2e-4d11-8af7-00d21bd565dd"
18
}

Por padrão, o idioma inglês (en-US) será usado.

Filtros

A capacidade de realizar buscas e filtros foi essencial, mas eu queria mais do que um endpoint básico de busca.

Base da busca da HawAPI:

CampoExemploPadrãoOpções
sort[..]?sort=first_name,ASCcampo, ASC ou DESC
page[..]?page=111..X
size[..]?size=12101..20
language[..]?language=en-USen-USI18N

Exemplo avançado de busca usando símbolos de modificação:

ModificationType(s)Symbol
LIKE**
NOT_LIKE*!*
BETWEENNúmero, Data::
NOT_IN*!:
IN*:
GREATER_OR_EQUALS_TONúmero, Data>=
LESS_OR_EQUALS_TONúmero, Data<=
GREATER_THANNúmero, Data>
LESS_THANNúmero, Data<
NOT_EQUALS*!
EQUALS*

Com esse poder, podemos criar pesquisas de API robustas e complexas como:

Todos os personagens com sobrenome parecido com Wheeler, gênero igual a 1 e data de nascimento maior ou igual a 1967-01-01

Como usar a API com JavaScript

Nesta seção, veremos como buscar informações do HawAPI usando a API Fetche o pacote @hawapi/js-sdk:

Fetch API

Veja como usar com a API nativa Fetch:

  1. Usando then/catch:
index.js
1
fetch('https://hawapi.theproject.id/api/v1/characters/')
2
.then((response) => response.json())
3
.then((data) => {
4
console.log(data);
5
})
6
.catch((error) => console.error(error));
  1. Usando async/await:
index.js
1
async function fetchAndLogCharacters() {
2
try {
3
const response = await fetch(
4
'https://hawapi.theproject.id/api/v1/characters/'
5
);
6
const data = await response.json();
7
console.log(data);
8
} catch (error) {
9
console.error('Error:', error);
10
}
11
}
12
13
fetchAndLogCharacters();

HawAPI SDK

Podemos usar o SDK do HawAPI em JavaScript para melhorar o código:

  1. Instale o SDK:
Terminal window
npm install @hawapi/js-sdk
Terminal window
yarn add @hawapi/js-sdk
  1. Crie a instância e faça solicitações:
index.ts
1
import { EpisodeModel, createClient } from '@hawapi/js-sdk';
2
// const { EpisodeModel, createClient } = require('@hawapi/js-sdk');
3
4
const client = createClient();
5
6
async function fetchAndLogCharacters() {
7
const res = await client.getRandom<EpisodeModel>('episodes');
8
console.log(res);
9
}
10
11
fetchAndLogCharacters();

O SDK também pode ser usado no navegador com a tag <script>.

Veja mais em HawAPI/js-sdk#examples/web

Hawbrary

A Hawbrary é uma “biblioteca” que exibe todas as informações fornecidas pela HawAPI. Foi desenvolvida com React (NextJs) + Typescript, hospedada no GitHub Pages e utiliza o SDK oficial @hawapi/js-sdk.

Hawbrary - Image 3
Hawbrary - Image 3 - View image in a new tab
Hawbrary - Image 1
Hawbrary - Image 1 - View image in a new tab
Hawbrary - Image 2
Hawbrary - Image 2 - View image in a new tab

Veja a demo Hawbrarye o repositório no GitHub

Conclusão

Nesta publicação, exploramos o histórico e os recursos do projeto HawAPI, incluindo o projeto Hawbrary.

Se você achar a API útil, dê uma estrela ao repositório GitHub e aproveite o #StrangerThingsDay para criar um projeto novo!

Recursos e Referências

Gostou deste post? Sinta-se à vontade para compartilhar!

HawAPI: Explore o mundo de Stranger Things usando essa API



Compartilhar no LinkedIn
Compartilhar no Twitter
Compartilhar no Reddit
Copiar link
QR Code

Comentários

RSS
Tags
Código do site
Logo Logo
Lucas Josino
© 2025 • Desenvolvido com Astro