{"id":12547,"date":"2020-11-12T11:00:00","date_gmt":"2020-11-12T13:00:00","guid":{"rendered":"https:\/\/enotas.com.br\/blog\/?p=12547"},"modified":"2023-01-25T14:53:31","modified_gmt":"2023-01-25T17:53:31","slug":"rest-api","status":"publish","type":"post","link":"https:\/\/enotas.com.br\/blog\/rest-api\/","title":{"rendered":"O que \u00e9 uma REST API?"},"content":{"rendered":"<p dir=\"ltr\">Na programa\u00e7\u00e3o e desenvolvimento de softwares, existe uma s\u00e9rie de conceitos fundamentais para garantir uma boa experi\u00eancia ao usu\u00e1rio \u2013 que sequer sonha com isso.&nbsp;<\/p>\n<p dir=\"ltr\">Um deles \u00e9 a <a href=\"https:\/\/enotas.com.br\/blog\/api\/\" style=\"outline: none;\" target=\"_blank\" rel=\"noopener\">API<\/a>. Um c\u00f3digo program\u00e1vel que consegue garantir que dois softwares diferentes possam se comunicar entre si.&nbsp;<\/p>\n<p dir=\"ltr\">E ainda a <strong>REST API<\/strong>, outro conceito que sua empresa pode utilizar para &nbsp;garantir um bom desenvolvimento de servi\u00e7os de web.<\/p>\n<p dir=\"ltr\">Neste conte\u00fado vamos explicar um pouco de como funciona essa ferramenta de programa\u00e7\u00e3o.&nbsp;<\/p>\n<h2 dir=\"ltr\" id=\"indice-0\" data-indice=\"0\" data-viewport=\"indice\">O que \u00e9 uma REST API?<\/h2>\n<p dir=\"ltr\">O nome completo de nosso personagem \u00e9 <strong>RESTFul API<\/strong>.&nbsp;<\/p>\n<p dir=\"ltr\">Enquanto API \u00e9 a sigla em ingl\u00eas para Interface de Programa\u00e7\u00e3o de Aplica\u00e7\u00e3o (Application Programing Interface), o REST \u00e9 acr\u00f4nimo para Representation State Transfer.<\/p>\n<p dir=\"ltr\">Bom, mas decifrar os nomes n\u00e3o ajuda muito. Na pr\u00e1tica, que \u00e9 o que vale mesmo, o REST \u00e9 uma API que usa restri\u00e7\u00f5es HTTP para extrair, inserir, postar e deletar dados.&nbsp;<\/p>\n<p dir=\"ltr\">Com a REST API, o usu\u00e1rio se conecta e interage com aplica\u00e7\u00f5es em nuvens, o que \u00e9 muito usado em sites como Google, Amazon, <a href=\"https:\/\/enotas.com.br\/blog\/perfil-no-linkedin\/\" style=\"outline: none;\">LinkedIn<\/a> e Twitter.&nbsp;<\/p>\n<p dir=\"ltr\">Como toda API, ela conecta dados armazenados em uma plataforma e \u201ctransfere\u201d para outra.&nbsp;<\/p>\n<h2 dir=\"ltr\" id=\"indice-1\" data-indice=\"1\" data-viewport=\"indice\">Quais s\u00e3o os tipos de APIs?<\/h2>\n<p dir=\"ltr\">A REST n\u00e3o \u00e9 a \u00fanica API que existe.&nbsp;<\/p>\n<p dir=\"ltr\">As APIs t\u00eam <strong>tr\u00eas formas de atuar:<\/strong> localmente, baseada na web e em programas. Veja:<\/p>\n<ul>\n<li dir=\"ltr\">As de atua\u00e7\u00e3o local s\u00e3o chamadas de privadas, utilizadas internamente entre as aplica\u00e7\u00f5es de uma empresa.&nbsp;<\/li>\n<li dir=\"ltr\">Atuando baseada na web s\u00e3o as p\u00fablicas, usadas livremente e disponibilizadas por empresas para que os desenvolvedores fa\u00e7am integra\u00e7\u00f5es entre as aplica\u00e7\u00f5es.<\/li>\n<li dir=\"ltr\">J\u00e1 as parceiras s\u00e3o aquelas usadas entre neg\u00f3cios que comungam a integra\u00e7\u00e3o dos dados, mesmo que sejam softwares diferentes.&nbsp;<\/li>\n<\/ul>\n<h2 dir=\"ltr\" id=\"indice-2\" data-indice=\"2\" data-viewport=\"indice\">Quais s\u00e3o as funcionalidades de uma REST API?<\/h2>\n<p dir=\"ltr\">A principal funcionalidade de uma REST API \u00e9 ser uma \u201cponte\u201d entre dois softwares diferentes em que um cede dados do usu\u00e1rio a <a href=\"https:\/\/enotas.com.br\/blog\/planejamento-de-2021-para-software-houses\/\" target=\"_blank\" rel=\"noopener\">outro software<\/a>.<\/p>\n<p dir=\"ltr\">Um exemplo bem pr\u00e1tico dessa funcionalidade \u00e9 fazer login em um sistema utilizando dados j\u00e1 cadastrados em outro.&nbsp;<\/p>\n<p dir=\"ltr\">Sabe quando voc\u00ea acessa um sistema de pagamento online e faz login pelas redes sociais, como o Facebook?&nbsp;<\/p>\n<p dir=\"ltr\">Um REST API \u00e9 a interface dessa transfer\u00eancia de dados. Isso ajuda a separar as aplica\u00e7\u00f5es <a href=\"https:\/\/www.lewagon.com\/pt-BR\/blog\/dicionario-de-termos-computacao\" target=\"_blank\" style=\"outline: none;\" rel=\"noopener\">back-end<\/a> e front-end.&nbsp;<\/p>\n<p dir=\"ltr\">Isso significa dizer que os dados do usu\u00e1rio s\u00e3o preservados e a troca dessas informa\u00e7\u00f5es s\u00e3o realizadas apenas para recuperar dados, inserir ou delet\u00e1-los.&nbsp;<\/p>\n<p dir=\"ltr\">Ter uma REST API em sua empresa ainda permite utilizar diversas funcionalidades em seu site.<\/p>\n<p dir=\"ltr\">A principal delas, como n\u00e3o poderia deixar de ser em um sistema de troca de informa\u00e7\u00f5es, \u00e9 a integra\u00e7\u00e3o com diferentes plataformas, como as redes sociais e os sistemas de pagamento.&nbsp;<\/p>\n<p dir=\"ltr\">Isso \u00e9 capaz de te dar, ainda, mais escalabilidade e ganhar confian\u00e7a de seus usu\u00e1rios.&nbsp;&nbsp;&nbsp;<\/p>\n<h2 dir=\"ltr\" id=\"indice-3\" data-indice=\"3\" data-viewport=\"indice\">Quais s\u00e3o os m\u00e9todos usados em uma REST API?<\/h2>\n<p dir=\"ltr\">Para fazer tudo isso, uma REST API se utiliza de alguns meios. Esses m\u00e9todos de recursos s\u00e3o verbos, em ingl\u00eas, que dizem quais as a\u00e7\u00f5es que o API deve realizar, de acordo com o pedido do usu\u00e1rio.&nbsp;<\/p>\n<ul>\n<li dir=\"ltr\">GET: esse recurso \u00e9 quando um usu\u00e1rio requisita dados para a API, que, por sua vez, busca essas informa\u00e7\u00f5es na nuvem, disponibilizadas por outras plataformas, como as redes sociais.&nbsp;<\/li>\n<li dir=\"ltr\">POST: essa a\u00e7\u00e3o acontece quando o usu\u00e1rio permite o envio de dados para serem processados em outros recursos. \u00c9 como preencher um formul\u00e1rio web que, posteriormente, poder\u00e1 servir para abastecer um requerimento.<\/li>\n<li dir=\"ltr\">PUT: j\u00e1 esse comando \u00e9 utilizado para atualizar dados.&nbsp;<\/li>\n<li dir=\"ltr\">DELETE: como n\u00e3o poderia deixar de ser, um recurso que \u00e9 usado para apagar dados.&nbsp;<\/li>\n<\/ul>\n<h2 dir=\"ltr\" id=\"indice-4\" data-indice=\"4\" data-viewport=\"indice\">Quais os crit\u00e9rios para uma API ser RESTful?<\/h2>\n<p dir=\"ltr\">Os <strong>principais crit\u00e9rios<\/strong> para uma API ser RESTful s\u00e3o:<\/p>\n<ul>\n<li dir=\"ltr\">Uniform Interface<\/li>\n<li dir=\"ltr\">Stateless<\/li>\n<li dir=\"ltr\">Cacheable<\/li>\n<li dir=\"ltr\">Client-Server<\/li>\n<li dir=\"ltr\">Layered system<\/li>\n<\/ul>\n<p dir=\"ltr\">Uma vez que voc\u00ea n\u00e3o segue essas restri\u00e7\u00f5es, sua API <strong>n\u00e3o<\/strong> ser\u00e1 RESTful, mas sim, apenas mais uma implementa\u00e7\u00e3o RPC em cima do protocolo HTTP.<\/p>\n<p dir=\"ltr\">E, por falar em crit\u00e9rios, existe uma uma restri\u00e7\u00e3o que \u00e9 geralmente menos atendida, a <strong>interface uniforme<\/strong> (Uniform interface). Mas, voc\u00ea sabe o que isso significa?<\/p>\n<p dir=\"ltr\">Bom, atingir uma interface uniforme significa alcan\u00e7ar <strong>4 crit\u00e9rios:<\/strong><\/p>\n<h3 dir=\"ltr\">1. Resource-based<\/h3>\n<p dir=\"ltr\">Ao contr\u00e1rio de um &nbsp;RPC, o REST tenta lidar com recursos em vez de m\u00e9todos. Caso voc\u00ea esteja criando um post chamando<span style=\"text-decoration: underline;\"> \/posts\/create?title=lorem<\/span>; voc\u00ea n\u00e3o est\u00e1 seguindo o padr\u00e3o REST, isso por causa do tratamento de m\u00e9todos na URL.<\/p>\n<p dir=\"ltr\">Portanto, em situa\u00e7\u00f5es assim, o ideal seria fazer uma chamada POST para a cole\u00e7\u00e3o de \/posts.<\/p>\n<h3 dir=\"ltr\">2. Manipulation of resources through representations&nbsp;<\/h3>\n<p dir=\"ltr\">Aqui, o cliente acessa os recursos por meio de uma representa\u00e7\u00e3o (JSON, <a href=\"https:\/\/enotas.com.br\/blog\/o-que-e-arquivo-xml-da-nfe\/\" style=\"outline: none;\" target=\"_blank\" rel=\"noopener\">XML<\/a>, etc.), que contenha informa\u00e7\u00e3o suficiente para manipular este no servidor, desde que tenha permiss\u00e3o pra isso.&nbsp;<\/p>\n<h3 dir=\"ltr\">3. Self-descriptive Messages<\/h3>\n<p dir=\"ltr\">Como o pr\u00f3prio nome diz, as respostas s\u00e3o auto-descritivas, contendo informa\u00e7\u00f5es suficientes para que o cliente saiba como utiliz\u00e1-las.<\/p>\n<p dir=\"ltr\">Usando HTTP, por exemplo, \u00e9 necess\u00e1rio uma propriedade Content-Type inclu\u00edda no cabe\u00e7alho para descrever que tipo de representa\u00e7\u00e3o ser\u00e1 utilizada.<\/p>\n<h3 dir=\"ltr\">4. Hypermedia as the engine of application state (HATEOAS)<\/h3>\n<p dir=\"ltr\">A HATEOAS \u00e9 um componente da arquitetura de aplicativos REST que o distingue de outras arquiteturas de aplicativos de rede.&nbsp;<\/p>\n<p dir=\"ltr\">Com o HATEOAS, um cliente interage com um aplicativo de rede cujos servidores de aplicativos fornecem informa\u00e7\u00f5es dinamicamente por meio da hiperm\u00eddia.<\/p>\n<h2 dir=\"ltr\" id=\"indice-5\" data-indice=\"5\" data-viewport=\"indice\">Para que usar RESTs APIs?<\/h2>\n<p dir=\"ltr\">Se depois de toda essa leitura, voc\u00ea estiver se perguntando sobre o porqu\u00ea precisa usar o REST API, veja algumas vantagens que sua empresa ter\u00e1 ao usar esse recurso.&nbsp;<\/p>\n<h3 dir=\"ltr\">Dados de clientes e servidor separados<\/h3>\n<p dir=\"ltr\">Ainda h\u00e1 pouco, voc\u00ea leu sobre essa separa\u00e7\u00e3o de dados entre cliente e servidor.&nbsp;<\/p>\n<p dir=\"ltr\">Mas, \u00e9 importante ressaltar que, dessa forma, voc\u00ea protege todo o armazenamento dessas informa\u00e7\u00f5es, j\u00e1 que toda troca de comunica\u00e7\u00e3o entre a REST API \u00e9 para troca de informa\u00e7\u00f5es, pois n\u00e3o h\u00e1 tratamento de regras de neg\u00f3cio.&nbsp;<\/p>\n<h3 dir=\"ltr\">Rapidez<\/h3>\n<p dir=\"ltr\">De modo geral, toda API facilita a comunica\u00e7\u00e3o entre dois softwares.&nbsp;<\/p>\n<p dir=\"ltr\">Isso faz com que o cadastro de um usu\u00e1rio fa\u00e7a essa a\u00e7\u00e3o de maneira muito mais r\u00e1pida. Basta pegar o exemplo do login em uma plataforma de pagamentos clicando em um bot\u00e3o com \u201centrar com Facebook\u201d.&nbsp;<\/p>\n<p dir=\"ltr\">Melhorando a experi\u00eancia do usu\u00e1rio em seu app ou site, ele certamente te dar\u00e1 mais autoridade, gerando escalabilidade em seu neg\u00f3cio.&nbsp;<\/p>\n<p dir=\"ltr\">\u200b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na programa\u00e7\u00e3o e desenvolvimento de softwares, existe uma s\u00e9rie de conceitos fundamentais para garantir uma boa experi\u00eancia ao usu\u00e1rio \u2013 que sequer sonha com isso.&nbsp; Um deles \u00e9 a API. Um c\u00f3digo program\u00e1vel que consegue garantir que dois softwares diferentes possam se comunicar entre si.&nbsp; E ainda a REST API, outro conceito que sua empresa [&#8230;]<\/p>\n","protected":false},"author":15,"featured_media":12550,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[205],"tags":[],"class_list":["post-12547","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech"],"_links":{"self":[{"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/posts\/12547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/comments?post=12547"}],"version-history":[{"count":10,"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/posts\/12547\/revisions"}],"predecessor-version":[{"id":27708,"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/posts\/12547\/revisions\/27708"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/media\/12550"}],"wp:attachment":[{"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/media?parent=12547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/categories?post=12547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enotas.com.br\/blog\/wp-json\/wp\/v2\/tags?post=12547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}