Do curso: Fundamentos de APIs Rest

O que é API?

Antes de falarmos o que é REST, o que é RESTful e conhecermos todos os detalhes, vamos ver de fato o que é uma API, um termo que é extremamente utilizado no mercado e que gera muita dúvida no pessoal. Bom, uma API é uma Application Program Interface, ou seja, se nós fossemos traduzir isso para português, nós teríamos uma interface de programação de aplicações. Agora, vendo aqui em português, fica mais simples da gente entender. Uma API é uma interface que nós vamos utilizar para construir os nossos programas, ou seja, é uma interface por onde nós vamos programar as nossas aplicações. Quando nós falamos de API, nós estamos falando de um termo extremamente genérico dentro do desenvolvimento de software e do mundo de tecnologia. Por isso que isso gera muita, muita dúvida. Bom, então o que que nós podemos dizer aqui? Quando nós falamos de uma API, nós estamos falando de qualquer coisa que tenha uma interface para a gente programar. Por exemplo, se nós pegarmos as linguagens de programação, as linguagens, elas têm uma API, que é a interface de programação de aplicações por onde a gente escreve as nossas aplicações. Então nós podemos falar que, por exemplo, a linguagem Java, a linguagem PHP, a linguagem Python, enfim, as linguagens, elas possuem API, que através dessa interface, desse conjunto de regras que nós utilizamos a linguagem e conseguimos criar os nossos programas, ou seja, uma interface de programação de aplicações, API. Se nós olharmos, por exemplo, um FrameWork. Um FrameWork possui uma API. É através dessa API que nós conseguimos aí criar as nossas aplicações, ou seja, via interface que o FrameWork nos dá, nós programamos as nossas aplicações, ou seja, uma API. Se nós olharmos dispositivos, vários dispositivos tem API. Através dessas API que nós conseguimos programar esses dispositivos. Se nós olharmos, por exemplo, o sistema operacional. O sistema operacional, ele também conta com uma API. Por quê? Quando, por exemplo, eu abro um programa, para aquele programa ser exibido, a linguagem, quem chamou aquele programa utilizou uma API do sistema operacional e, através dessa interface de programação do sistema operacional, ele falou o seguinte: "Mostra essa tela, faz isso, faz aquilo". Então o sistema operacional, ele também tem uma API, e através dessa API que nós conseguimos criar os sistemas que vão funcionar dentro dele. Conforme eu disse, linguagens de programação, frameworks, Sistemas operacionais, todos possuem a API, que é a interface por onde nós programamos as nossas aplicações. Aqui eu selecionei um vídeo onde eu mostro a API do Laravel. O Laravel é um FrameWork de desenvolvimento back end e aqui a documentação da API do Laravel. Veja que enquanto eu estou rolando aqui, todos esses detalhes são a documentação da API do Laravel, ou seja, está dizendo como que eu utilizo a interface do Laravel para programar as minhas aplicações. Então nós temos aí para cada framework, para cada tecnologia que nós vamos utilizar uma API, que através dessa API que nós construímos as nossas aplicações. Você deve estar pensando aí: "Tá bom, Elton, eu acho que eu entendi, mas você tem um exemplo mais concreto, algo do mundo real que você pode fazer ali uma analogia?" Sim, eu separei isso aqui para gente. Vamos lá. Isso daqui é a cabine de um avião, ou seja, o cockpit. Aqui no cockpit do avião nós temos uma interface. É através dessa interface que o piloto, ele pilota o avião, ou seja, que ele define o que o avião deve fazer. No caso da API, nós temos basicamente isso daqui. Nós temos uma interface. Só que ao invés de pilotar um avião, nós vamos programar uma aplicação a partir dessa interface. E eu gosto muito dessa analogia, por quê? Se nós olharmos aqui, cada botãozinho desse daqui faz uma coisa, imagina só para o piloto decorar todos os detalhes de todos esses botõezinhos? Com certeza ele não decora. Então ele tem uma documentação que vai falar para ele o que cada uma dessas partes da interface que ele tem faz. Mesma coisa nós temos quando nós estamos falando de desenvolvimento de software. Nós acabamos de ver aí a documentação da API do Laravel. É como se lá dentro ele estivesse falando: "Olha, esse botãozinho X faz isso, esse Y faz aquilo, aquele faz tal coisa". Então a documentação, ela vai ser algo que vai ajudar a gente a entender o que cada coisa dentro dessa API, ou seja, dessa interface de programação de aplicações que nós temos, o que ela faz. Então por isso que eu gosto bastante dessa analogia. Então nós entendemos que uma API é uma interface por onde a gente programa as nossas aplicações. Vimos também que as API estão em vários locais, como, por exemplo, nas linguagens de programação, nos frameworks, nos dispositivos, nos sistemas operacionais e em muitos outros locais. O grande detalhe é que quando as pessoas estão falando para você de API, provavelmente elas estão falando de um tipo específico de API, que são as API HTTP. As API HTTP são extremamente utilizadas hoje em dia e, inclusive, a gente vive o que a gente chama de API economy, porque vários serviços que geram muito valor financeiro, eles estão ligados através de API. As API vão permitir que diversos sistemas de diferentes tipos se comuniquem, e isso é extremamente importante e útil hoje em dia. Por isso que geralmente, quando as pessoas estão falando de API com você estão falando de APIs que a gente utiliza através do protocolo HTTP. Olhando para essa imagem, nós podemos ver um exemplo. Nós temos uma API e através dessa API nós temos ali a programação de uma aplicação web, de uma aplicação desktop, de uma aplicação mobile, de uma outra aplicação de terceiros, seja aí uma aplicação de backend, uma aplicação de front end, uma aplicação de processamento, enfim, qualquer coisa. A gente liga isso através das API. Então por isso que elas são extremamente importantes. Então, quando você vê alguém falar para você de uma API, você precisa ter em mente pelo contexto que a pessoa está falando, se ela está falando, por exemplo, da API do FrameWork, da API do sistema operacional, onde você tem uma interface para programar algo, ou se ela está falando de uma API HTTP. Uma API HTTP, ela vai estar falando de uma aplicação específica que recebe requisições do tipo HTTP e, através disso, nós conseguimos integrar os diferentes sistemas. Então isso é bem interessante e bem importante. Por isso que o termo, ele gera tantas dúvidas. Quando nós falamos de API, nós estamos falando de qualquer interface de programação. Quando nós falamos de API HTTP, aí sim nós vamos de uma aplicação que recebe conexões através de HTTP e responde permitindo que diversas aplicações se comuniquem através dessa interface. Não deixa de ser uma API, mas é algo bem mais específico, então bastante cuidado aí quando você ouvir falar de API. Então tenta já levar em mente se está falando de uma aplicação HTTP utilizada para integração entre sistemas ou se está falando de uma interface que permite, por exemplo, você criar um programa como a interface da linguagem de programação, do FrameWork, do sistema operacional, certo? Então, por isso que gera tanta dúvida e eu tenho aqui esta ideia de trazer para vocês essa diferença. Certo? Outro termo muito comum que você vai encontrar para as aplicações API HTTP é o termo WebService, principalmente para os profissionais com mais tempo de mercado. Porque, realmente, esse tipo de aplicação que nós conhecemos aqui, as API HTTPS, inicialmente elas eram chamadas de WebServices, então também é comum você ouvir falar: "Ah, eu estou criando um WebService". Também se refere a mesma coisa, a uma API HTTP que a gente utiliza aí para integração entre diferentes tipos de sistemas. Vamos então entender de fato como funciona essa tão falada API HTTP. Aqui nós temos de um lado o cliente e do outro a API. O cliente, eu representei ele através de um dispositivo móvel, ou seja, de uma aplicação mobile. Porém, nós poderíamos ter uma aplicação web, desktop, back end. Qualquer aplicação que vai se conectar a nossa API é chamada de cliente. Legal. Vamos pensar o seguinte. Vamos pensar que nós estamos no aplicativo da TreinaWeb, onde vocês estudam, onde vocês assistem os cursos. E lá dentro do aplicativo, a aplicação mobile precisa obter a lista dos cursos cadastrados na TreinaWeb. Então a aplicação mobile vai fazer o quê? Ela vai montar uma requisição para a API. Então eu falar: "Olha, eu quero pegar"... Então por isso o verbo "get", o método http get. "Eu quero pegar a lista de cursos". Então ela vai chamar esse recurso, "/treinaweb/cursos. E com isso vai fazer a requisição propriamente dita à API HTTP. A API HTTP vai verificar se realmente esse usuário tem permissão de acessar esse recurso, se a requisição está certa e, se tiver tudo certo, ele vai montar a resposta. Então aqui nesse caso uma resposta 200, ok, deu tudo certo, ele vai retornar um application JSON, ou seja, vai retornar os dados em formato JSON e os dados são esses daqui. Então os dados do curso um, do curso dois, do curso n estariam todos aqui dentro do corpo da nossa mensagem de resposta. E aí essa mensagem, ela é retornada para o cliente e o cliente utiliza ela da maneira como ele achar melhor. Então ele vai ali mostrar a lista de cursos para o usuário fazer alguma verificação, enfim, algo específico aqui da aplicação cliente. O legal aqui da API HTTP é que o cliente, ele não precisa conhecer nada sobre a implementação interna da API. Então se essa API, ela foi feita em Java, PHP, Python, Node, enfim, isso não importa para o cliente, o que importa para ele é simplesmente saber ali qual é a interface daquela API, ou seja, como ele vai se comunicar com aquela API, que no caso aqui HTTP, e quais são os recursos que ele tem acesso e tudo mais. A partir disso, ele não precisa saber mais nada sobre a implementação da API. Com isso, torna muito mais fácil a integração entre diferentes sistemas em diferentes linguagens. Certo? Vamos para mais um exemplo. Aqui eu peguei um outro exemplo, onde nós temos uma aplicação web e uma API. Aqui a aplicação web vai ser o cliente e vamos pensar que essa aplicação web é a aplicação administrativa da TreinaWeb, onde nós cadastramos os cursos que vocês vêm na plataforma. E aqui eu quero fazer o seguinte, eu quero cadastrar um novo curso. Então eu vou fazer uma requisição HTTP do tipo "post" para o recurso, que é /treinaweb/cursos. Vou dizer que eu vou enviar um JSON e vou criar, por exemplo, o curso de PHP com uma carga horária de dez horas. Então estou mandando aqui um JSON no corpo da nossa mensagem de requisição. E eu vou enviar a requisição propriamente dito e aí a API vai verificar a mesma coisa, se tem permissão de criar, se está certo os dados, tudo isso. Se tiver certo, ela vai montar uma resposta. Então aqui no caso ela falou 200, ok, deu certo. Retornou um content type application JSON. Ou seja, também estou retornando um JSON para o meu cliente. E aqui estão os dados do recurso que eu criei. Então ele criou o curso no banco de dados ou em algum lugar, que não importa para o cliente, esse curso, ele tem uma identificação que é 1234. Então o recurso, ele tem essa identificação. Aqui o nome do curso é PHP e a carga é 10. Depois que ele monta isso, ele retorna para o usuário dizendo: "Olha, deu certo, eu criei e está aqui os dados que eu criei", certo? Inclusive com a identificação. E aí o cliente, ele vai fazer o que for necessário com esses dados, certo? Então, com esse fluxo que nós vimos aqui, que parece um fluxo extremamente simples, na verdade é um fluxo simples, a gente consegue criar coisas extremamente complexas. Então se a gente pegar hoje em dia, olhar no mercado, por exemplo, gateway de pagamento, algo extremamente sensível, que mexe com dinheiro, utiliza muito API. Então é através das API que a gente vai se conectar ao gateaway e dizer: "Olha, cobra tanto de tal cartão de crédito. Olha, gera esse boleto para mim. Faz isso, faz aquilo". Se nós pegarmos aí, por exemplo, uma situação muito comum no dia a dia, a gente tem um CEP e precisa descobrir o endereço. A gente utiliza muito API para isso. Então tem uma API onde a gente manda o CEP e ela retorna o endereço para gente. Vamos supor que você quer consultar a temperatura de uma cidade em qualquer lugar do mundo. Você tem aí hoje API que você manda a cidade e ela vai dizer qual a temperatura para você. Enfim, a gente consegue então conversar diversos sistemas dentro de um ambiente global, dentro da internet, utilizando API, certo? Então é extremamente importante a gente entender como as API funcionam e trabalhar com elas, porque isso vai ser extremamente útil no mercado.

Conteúdos