{"id":26409,"date":"2022-02-08T12:18:15","date_gmt":"2022-02-08T15:18:15","guid":{"rendered":"\/tutoriais\/?p=26409"},"modified":"2025-04-09T04:36:42","modified_gmt":"2025-04-09T07:36:42","slug":"api-restful","status":"publish","type":"post","link":"\/br\/tutoriais\/api-restful","title":{"rendered":"O que \u00e9 uma API RESTful e por que isso importa"},"content":{"rendered":"<p>Neste tutorial vamos mostrar o que &eacute; uma API, o que faz com que ela passe a ser uma API RESTful e quais os princ&iacute;pios e as fun&ccedil;&otilde;es necess&aacute;rias para que isso aconte&ccedil;a.&nbsp;<\/p><p>Uma API promove a conex&atilde;o entre um usu&aacute;rio e uma aplica&ccedil;&atilde;o, mas sem que ele precise dos detalhes da estrutura e do desenvolvimento do sistema que est&aacute; tentando utilizar. A categoria REST apresenta alguns crit&eacute;rios espec&iacute;ficos, que visam padronizar e flexibilizar essa comunica&ccedil;&atilde;o entre diferentes plataformas.&nbsp;<\/p><p>Quando uma API atende aos padr&otilde;es propostos pelo estilo de arquitetura REST, ela pode ser caracterizada como uma API RESTful. Uma API deste tipo &eacute; especialmente &uacute;til para aplica&ccedil;&otilde;es em nuvem.<\/p><p>Agora passaremos a analisar alguns detalhes e a entender estes conceitos com mais profundidade. Vamos l&aacute;!<\/p><figure class=\"wp-block-image size-large\"><a href=\"https:\/\/assets.hostinger.com\/content\/tutorials\/pdf\/Speed-Up-Your-Website-BR.pdf\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/eBook_-Speed-Up-your-website-BR.png\/public\" alt=\"\" class=\"wp-image-30339\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/eBook_-Speed-Up-your-website-BR.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/eBook_-Speed-Up-your-website-BR.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/eBook_-Speed-Up-your-website-BR.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/eBook_-Speed-Up-your-website-BR.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/eBook_-Speed-Up-your-website-BR.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-o-que-e-api\"><strong>O Que &Eacute; API<\/strong><\/h2><p>Uma API (Interface de Programa&ccedil;&atilde;o de Aplica&ccedil;&otilde;es, na sigla em ingl&ecirc;s), &eacute; um conjunto de padr&otilde;es e protocolos que integram um usu&aacute;rio a uma aplica&ccedil;&atilde;o, permitindo que ele acesse e fa&ccedil;a uso das funcionalidades do <em>software <\/em>em quest&atilde;o.&nbsp;<\/p><p>Uma API funciona como um mediador, ou comunicador, entre o usu&aacute;rio e o sistema. Deste modo, ela facilita o acesso e o desenvolvimento de aplica&ccedil;&otilde;es para a internet.&nbsp;<\/p><p>Vale lembrar que esta interoperabilidade oferecida por uma API ocorre tanto entre aplica&ccedil;&atilde;o e usu&aacute;rio, quanto entre diferentes aplica&ccedil;&otilde;es. Isso acontece sem exigir que a parte que est&aacute; acessando o sistema tenha conhecimento dos detalhes de desenvolvimento e implementa&ccedil;&atilde;o do <em>software <\/em>em quest&atilde;o.<\/p><h2 class=\"wp-block-heading\" id=\"h-o-que-faz-uma-api-ser-do-tipo-rest\"><strong>O Que Faz uma API ser do Tipo REST<\/strong><\/h2><p>Agora que voc&ecirc; sabe o que &eacute; uma API, vamos descobrir o que faz com que uma API seja do tipo REST, j&aacute; que elas podem ser de diferentes tipos.<\/p><p>A abreviatura REST se refere a <em>Representational State Transfer <\/em>(Transfer&ecirc;ncia de Estado Representacional) e &eacute; um tipo de arquitetura de <em>software<\/em>. Uma REST indica ent&atilde;o um conjunto de restri&ccedil;&otilde;es que devem ser seguidas no desenvolvimento de uma aplica&ccedil;&atilde;o na internet.<\/p><p>Estas regras permitem o desenvolvimento de uma aplica&ccedil;&atilde;o com interface bem definida, com rotinas padronizadas e facilmente representadas, que facilitam a comunica&ccedil;&atilde;o entre m&aacute;quinas e usu&aacute;rios.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/mK_88jz0VwMaEDQtszTDDhh5E_XbWtLPZKYyW3lNpEV5ZNIbWQ46BC38bQEJSMyA9fi3e-WeoUNYrF4_9LQFxs4uagHydTDsZHRFKMaJT-DOfLrzUMJGghrk_4SWPg\" alt=\"REST API do WordPress\"><\/figure><\/div><p>Vamos agora conhecer as restri&ccedil;&otilde;es de arquitetura que caracterizam uma API RESTful:<\/p><ul class=\"wp-block-list\">\n<li><strong>Arquitetura cliente-servidor:<\/strong> indica uma arquitetura baseada em clientes, servidores e recursos, em que as solicita&ccedil;&otilde;es s&atilde;o feitas via protocolo HTTP. Essa condi&ccedil;&atilde;o est&aacute; ligada &agrave; independ&ecirc;ncia entre o cliente e o servidor. Ou seja, mudan&ccedil;as feitas pelo usu&aacute;rio na aplica&ccedil;&atilde;o em seu dispositivo n&atilde;o devem afetar o servidor e sua estrutura de dados. De mesmo modo, altera&ccedil;&otilde;es feitas pelos desenvolvedores nos bancos de dados da aplica&ccedil;&atilde;o n&atilde;o devem instantaneamente impactar o dispositivo do usu&aacute;rio.<\/li>\n\n\n\n<li><strong>Comunica&ccedil;&atilde;o stateless:<\/strong> a comunica&ccedil;&atilde;o feita entre cliente e servidor n&atilde;o deve armazenar nenhuma informa&ccedil;&atilde;o entre as solicita&ccedil;&otilde;es. Em uma REST API, cada solicita&ccedil;&atilde;o cont&eacute;m todos os dados necess&aacute;rios para que seja atendida, n&atilde;o dependendo de informa&ccedil;&otilde;es j&aacute; armazenadas em outras sess&otilde;es.<\/li>\n\n\n\n<li><strong>Cache:<\/strong> uma API REST deve ser desenvolvida de modo que consiga armazenar dados em cache. Quando uma informa&ccedil;&atilde;o fica armazenada em cache, as solicita&ccedil;&otilde;es e respostas entre cliente e servidor s&atilde;o otimizadas.<\/li>\n\n\n\n<li><strong>Interface uniforme:<\/strong> a interface uniforme &eacute; o que permite o desenvolvimento independente da aplica&ccedil;&atilde;o entre usu&aacute;rio e servidor. Uma REST API deve conter uma interface uniforme pois ela oferece uma comunica&ccedil;&atilde;o padronizada entre o usu&aacute;rio e o <em>software<\/em>. A manipula&ccedil;&atilde;o de recursos atrav&eacute;s de representa&ccedil;&otilde;es (como <a href=\"\/br\/tutoriais\/o-que-e-json\"><strong>JSON<\/strong><\/a> ou XML), &eacute; uma das condi&ccedil;&otilde;es para o desenvolvimento de uma interface uniforme.<\/li>\n\n\n\n<li><strong>Sistema de camadas:<\/strong> cada camada do sistema deve possuir uma funcionalidade espec&iacute;fica (como seguran&ccedil;a ou carregamento). Assim, cada camada &eacute; respons&aacute;vel por uma etapa diferente dos processos de requisi&ccedil;&atilde;o de usu&aacute;rio e de resposta do servidor. Essas camadas s&atilde;o ordenadas hierarquicamente mas, apesar de serem separadas, todas interagem entre si.<\/li>\n<\/ul><p>Confira <a href=\"\/br\/tutoriais\/guia-iniciante-api-rest-wordpress\"><strong>aqui<\/strong><\/a> mais detalhes sobre a fun&ccedil;&atilde;o do WordPress quanto &agrave; REST API.&nbsp;<\/p><h2 class=\"wp-block-heading\" id=\"h-como-funcionam-as-apis-restful\"><strong>Como Funcionam as APIs RESTful<\/strong><\/h2><p>Uma API RESTful funciona atrav&eacute;s da manipula&ccedil;&atilde;o de recursos e representa&ccedil;&otilde;es. Essas representa&ccedil;&otilde;es s&atilde;o trocadas entre os usu&aacute;rios e o servidor atrav&eacute;s de uma interface padronizada e de um protocolo de comunica&ccedil;&atilde;o espec&iacute;fico &mdash; geralmente o HTTP.&nbsp;<\/p><p>Assim, quando um usu&aacute;rio deseja usar uma funcionalidade da aplica&ccedil;&atilde;o, seu dispositivo envia uma solicita&ccedil;&atilde;o via HTTP ao servidor. O servidor localiza o recurso e comunica a representa&ccedil;&atilde;o do estado dele na resposta ao usu&aacute;rio atrav&eacute;s do mesmo protocolo. E s&atilde;o essas representa&ccedil;&otilde;es que podem ser feitas em diversos formatos.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"730\" height=\"313\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/02\/Rest-API.jpg\/public\" alt=\"Circuito usu&aacute;rio - REST API - servidor\" class=\"wp-image-26579\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/02\/Rest-API.jpg\/w=730,fit=scale-down 730w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/02\/Rest-API.jpg\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/02\/Rest-API.jpg\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 730px) 100vw, 730px\" \/><figcaption class=\"wp-element-caption\">(Fonte: <a href=\"https:\/\/www.seobility.net\/en\/wiki\/REST_API\" target=\"_blank\" rel=\"noopener\">Seobility<\/a>\/Reprodu&ccedil;&atilde;o)<\/figcaption><\/figure><\/div><p>As solicita&ccedil;&otilde;es da aplica&ccedil;&atilde;o requerem a execu&ccedil;&atilde;o de alguma fun&ccedil;&atilde;o padr&atilde;o no banco de dados do sistema. Por exemplo, a API RESTful envia ao servidor, via HTTP, uma requisi&ccedil;&atilde;o para executar uma fun&ccedil;&atilde;o b&aacute;sica, como deletar o usu&aacute;rio &ldquo;Pedro&rdquo; da lista de usu&aacute;rios. A solicita&ccedil;&atilde;o enviada nesse exemplo, seria a seguinte:&nbsp;<\/p><pre class=\"wp-block-preformatted\">DELETE http:\/\/www.meusite.com.br\/usuarios\/pedro<\/pre><p>As opera&ccedil;&otilde;es utilizadas para acessar os recursos s&atilde;o padronizadas e bem definidas, al&eacute;m do comando DELETE, existem outros, como http GET e POST que solicitam, respectivamente, a recupera&ccedil;&atilde;o e a cria&ccedil;&atilde;o de um recurso ou usu&aacute;rio.<\/p><h2 class=\"wp-block-heading\" id=\"h-usos-de-uma-api-rest\"><strong>Usos de uma API REST<\/strong><\/h2><p>Uma API RESTful oferece altos n&iacute;veis de liberdade e flexibilidade para os desenvolvedores. Seu uso &eacute; ben&eacute;fico principalmente em aplica&ccedil;&otilde;es em nuvem (servidores <em>cloud<\/em>).&nbsp;<\/p><p>Os princ&iacute;pios REST possibilitam que as representa&ccedil;&otilde;es enviadas pelo servidor estejam em diversos formatos (como JSON, XML, Python, etc.). Com isso, eles permitem a cria&ccedil;&atilde;o de uma API que responde &agrave;s necessidades tanto da aplica&ccedil;&atilde;o quanto dos diversos usu&aacute;rios.&nbsp;<\/p><p>Al&eacute;m da flexibilidade, uma API RESTful tende a utilizar menos largura de banda, tornando o uso da internet mais eficiente.<\/p><p>Uma das restri&ccedil;&otilde;es listadas na arquitetura REST &eacute; a comunica&ccedil;&atilde;o <em>stateless<\/em>. Ela traz benef&iacute;cios importantes para as aplica&ccedil;&otilde;es Cloud, pois permite que componentes sejam facilmente lan&ccedil;ados novamente caso algo falhe, al&eacute;m de facilitar a adapta&ccedil;&atilde;o quando h&aacute; flutua&ccedil;&atilde;o de tr&aacute;fego.<\/p><p>Cada solicita&ccedil;&atilde;o possui todas as informa&ccedil;&otilde;es necess&aacute;rias para que o servidor responda com as representa&ccedil;&otilde;es solicitadas. Isso torna a API RESTful ideal para servi&ccedil;os web, especialmente aqueles baseados em nuvem. Ela se torna a escolha mais l&oacute;gica pois permite a conex&atilde;o, a gest&atilde;o e a intera&ccedil;&atilde;o dos usu&aacute;rios com os servidores Cloud de forma padronizada, flex&iacute;vel e escal&aacute;vel.&nbsp;&nbsp;<\/p><p>Deste modo, o padr&atilde;o REST &eacute; o m&eacute;todo de prefer&ecirc;ncia na integra&ccedil;&atilde;o de aplica&ccedil;&otilde;es e na conex&atilde;o de componentes de <em>softwares<\/em>. Grandes sites como Twitter, Amazon e Linkedin utilizam APIs do tipo RESTful. E a tend&ecirc;ncia &eacute; que a computa&ccedil;&atilde;o em nuvem confirme cada vez mais a arquitetura API REST como via de regra no desenvolvimento de aplica&ccedil;&otilde;es no futuro.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/br\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-Web-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-32927\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-Web-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-Web-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-Web-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-Web-hosting_in-text-banner.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-Web-hosting_in-text-banner.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-como-surgiu-o-rest\"><strong>Como Surgiu o REST<\/strong><\/h2><p>A arquitetura de sistema REST foi criada pelo cientista da computa&ccedil;&atilde;o Roy Fielding em 2000. Anteriormente ele j&aacute; havia trabalhado na cria&ccedil;&atilde;o do protocolo HTTP e do URI &mdash; Identificador Uniforme de Recursos, um conjunto de elementos que identifica recursos nas aplica&ccedil;&otilde;es web.<\/p><p>Buscando padronizar e organizar os protocolos de comunica&ccedil;&atilde;o e desenvolvimento na internet, Fielding se uniu a um time de especialistas para desenvolver, durante 6 anos, as caracter&iacute;sticas da Representational State Transfer (REST), que foi definida em sua tese de PhD.&nbsp;<\/p><h2 class=\"wp-block-heading\" id=\"h-diferenca-entre-rest-e-restful\"><strong>Diferen&ccedil;a Entre REST e RESTful<\/strong><\/h2><p>Em termos de nomenclatura, &eacute; importante sabermos a diferen&ccedil;a entre os conceitos de REST e RESTful.&nbsp;<\/p><p>Como j&aacute; definimos anteriormente, REST &eacute; um conjunto de princ&iacute;pios e restri&ccedil;&otilde;es de arquitetura de <em>softwares<\/em>.&nbsp;<\/p><p>Uma API RESTful &eacute; aquela que est&aacute; em conformidade com os crit&eacute;rios estabelecidos pela Transfer&ecirc;ncia de Estado Representacional (REST).<\/p><p>Assim, quando uma API &eacute; do tipo RESTful, significa que esse sistema consegue aplicar os princ&iacute;pios propostos por Roy Fielding em sua tese REST.<\/p><h2 class=\"wp-block-heading\" id=\"h-conclusao\"><strong>Conclus&atilde;o<\/strong><\/h2><p>Quando voc&ecirc; interage com uma aplica&ccedil;&atilde;o na internet, &eacute; fun&ccedil;&atilde;o da API ajudar a comunicar o que voc&ecirc; deseja ao sistema, para que o servidor possa entender e realizar sua solicita&ccedil;&atilde;o.&nbsp;<\/p><p>O estilo de arquitetura REST representa um conjunto espec&iacute;fico de princ&iacute;pios que, se aplicados no desenvolvimento de uma aplica&ccedil;&atilde;o web, caracterizam uma API RESTful.<\/p><p>Os crit&eacute;rios que devem ser cumpridos s&atilde;o:<\/p><ul class=\"wp-block-list\">\n<li>Sistema no formato cliente-servidor<\/li>\n\n\n\n<li>Comunica&ccedil;&atilde;o stateless<\/li>\n\n\n\n<li>Capacidade de armazenar dados em cache<\/li>\n\n\n\n<li>Interface uniforme<\/li>\n\n\n\n<li>Sistema de camadas<\/li>\n<\/ul><p>Por indicar uma Transfer&ecirc;ncia de Estado Representacional, a arquitetura REST possibilita o acesso, a organiza&ccedil;&atilde;o e conex&atilde;o dos usu&aacute;rios aos servi&ccedil;os da aplica&ccedil;&atilde;o na internet, principalmente &agrave;queles baseados na nuvem (servidores cloud).<\/p><p>As restri&ccedil;&otilde;es listadas pelo estilo REST indicam benef&iacute;cios importantes para o desenvolvimento de aplica&ccedil;&otilde;es e sistemas. Afinal, elas resultam em maior flexibilidade, menor consumo de banda, mais seguran&ccedil;a e padroniza&ccedil;&atilde;o de protocolos. Assim, as tecnologias REST e RESTful tendem a crescer ainda mais no futuro, tornando-se os padr&otilde;es mais populares para estas fun&ccedil;&otilde;es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste tutorial vamos mostrar o que &eacute; uma API, o que faz com que ela passe a ser uma API RESTful e quais os princ&iacute;pios e as fun&ccedil;&otilde;es necess&aacute;rias para que isso aconte&ccedil;a.&nbsp; Uma API promove a conex&atilde;o entre um usu&aacute;rio e uma aplica&ccedil;&atilde;o, mas sem que ele precise dos detalhes da estrutura e do [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/br\/tutoriais\/api-restful\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":305,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"","rank_math_description":"O que \u00e9 uma API? E uma API RESTful? Neste tutorial voc\u00ea descobre isso e ainda mais: para que serve a arquitetura REST e quais seus benef\u00edcios.","rank_math_focus_keyword":"restful","footnotes":""},"categories":[4941],"tags":[7358,7357],"class_list":["post-26409","post","type-post","status-publish","format-standard","hentry","category-desenvolvimento-web","tag-api-restful","tag-rest-api"],"hreflangs":[{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/api-restful","default":1},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/api-restful","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/26409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/users\/305"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/comments?post=26409"}],"version-history":[{"count":9,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/26409\/revisions"}],"predecessor-version":[{"id":46508,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/26409\/revisions\/46508"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/media?parent=26409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/categories?post=26409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/tags?post=26409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}