{"id":8239,"date":"2021-03-15T15:42:05","date_gmt":"2021-03-15T18:42:05","guid":{"rendered":"https:\/\/geekblogti.wpengine.com\/?p=8239"},"modified":"2024-09-24T18:22:06","modified_gmt":"2024-09-24T21:22:06","slug":"sua-api-nao-e-restful-entenda-por-que","status":"publish","type":"post","link":"https:\/\/www.geekhunter.com/pt/blog\/sua-api-nao-e-restful-entenda-por-que\/","title":{"rendered":"Sua API n\u00e3o \u00e9 RESTful: Entenda por qu\u00ea"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>REST \u00e9 a abreviatura de <em>Representational State Transfer<\/em>, que em portugu\u00eas significa &#8220;Transfer\u00eancia de Estado Representacional&#8221;. REST \u00e9 uma de arquitetura de software, que possui algumas boas pr\u00e1ticas, definidas por Roy T. Fielding, para cria\u00e7\u00e3o de aplica\u00e7\u00f5es web.<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><em>&#8220;Mas e a API, \u00e9 RESTful?&#8221; <\/em> <\/p><cite> Todo desenvolvedor ao se deparar com uma API <\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">A resposta \u00e9 n\u00e3o!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ok, talvez eu esteja exagerando um pouco.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada vez mais, com a evolu\u00e7\u00e3o dos <em>web services<\/em> e a popularidade do &#8220;<strong>REST<\/strong>&#8220;, eu ou\u00e7o essa pergunta e, em seguida, sua resposta: &#8220;<em>\u00c9&#8230; Sim&#8230; Ta em REST<\/em>&#8220;. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 ent\u00e3o que eu mesmo me pergunto, ser\u00e1 verdade? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A resposta curta: provavelmente n\u00e3o. Agora para entender melhor essa resposta, vamos entender alguns conceitos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-o-que-o-restful\">O que \u00e9 o RESTful<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img fetchpriority=\"high\" decoding=\"async\" width=\"750\" height=\"500\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/11\/O-que-\u00e9-REST-e-RESTful.jpg\" alt=\"REST e RESTful\" class=\"wp-image-8247\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-que-\u00e9-REST-e-RESTful.jpg 750w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-que-\u00e9-REST-e-RESTful-150x100.jpg 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-que-\u00e9-REST-e-RESTful-100x67.jpg 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-que-\u00e9-REST-e-RESTful-600x400.jpg 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-que-\u00e9-REST-e-RESTful-450x300.jpg 450w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ao contr\u00e1rio do que muitos imaginam, <strong>REST n\u00e3o \u00e9 necessariamente um protocolo de comunica\u00e7\u00e3o<\/strong>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Criado por Roy T. Fielding em sua tese de Ph.D., REST \u00e9 um <strong>estilo de arquitetura<\/strong>, ou seja, uma s\u00e9rie de restri\u00e7\u00f5es que devem ser seguidas no processo de cria\u00e7\u00e3o de um<em> web service<\/em>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>RESTful seria, ent\u00e3o, a API que est\u00e1 de acordo com todas as restri\u00e7\u00f5es definidas por Roy.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E \u00e9 a\u00ed que a maior parte das <strong>APIs RESTful<\/strong> caem por terra, pois dificilmente elas est\u00e3o em conformidade com todas essas restri\u00e7\u00f5es, elas possuem diferentes<strong> graus de maturidade<\/strong>, conforme falaremos mais pra frente. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-restri-es-para-uma-api-restful\"><strong>Restri\u00e7\u00f5es<\/strong> para uma API RESTful<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Os principais crit\u00e9rios para uma API ser <strong>RESTful<\/strong> s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Uniform Interface;<\/li><li>Stateless;<\/li><li>Cacheable;<\/li><li>Client-Server;<\/li><li>Layered system.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Sem seguir todas estas restri\u00e7\u00f5es, sua API n\u00e3o ser\u00e1 RESTful, ser\u00e1 apenas mais uma <strong>implementa\u00e7\u00e3o RPC <\/strong>em cima do protocolo HTTP. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentre todas elas, existe uma restri\u00e7\u00e3o que \u00e9 geralmente menos atendida, a interface uniforme (<strong>Uniform interface<\/strong>). Mas, o que significa isso?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alcan\u00e7ar uma interface uniforme significa atingir quatro crit\u00e9rios:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Resource-based<\/strong>: Em contraposi\u00e7\u00e3o ao comum RPC, REST tenta lidar com recursos inv\u00e9s de m\u00e9todos. Caso voc\u00ea esteja criando um post chamando <em>\/posts\/create?title=lorem<\/em> voc\u00ea n\u00e3o est\u00e1 seguindo o padr\u00e3o <strong>REST<\/strong>, devido ao tratamento de m\u00e9todos na url. Nesse cen\u00e1rio, o ideal seria fazer uma chamada <strong>POST<\/strong> para a cole\u00e7\u00e3o de <em>\/posts<\/em>.<\/li><li><strong>Manipulation of resources through representations<\/strong>: O cliente acessa os recursos atrav\u00e9s de uma representa\u00e7\u00e3o (JSON, XML, etc.), que contenha informa\u00e7\u00e3o suficiente para manipular este no servidor, desde que tenha permiss\u00e3o pra isso.<\/li><li><strong>Self-descriptive Messages:<\/strong> As respostas s\u00e3o auto-descritivas, incluindo informa\u00e7\u00e3o suficiente para que o cliente saiba como utiliz\u00e1-las. Usando HTTP, por exemplo, \u00e9 necess\u00e1rio uma propriedade Content-Type inclu\u00edda no cabe\u00e7alho para descrever que tipo de representa\u00e7\u00e3o \u00e9 utilizada.<\/li><li>Hypermedia as the engine of application state (<strong>HATEOAS<\/strong>).<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.geekhunter.com\/pt\/candidates\/signup?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=sua_api_nao_e_restful_entenda_por_que\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"720\" height=\"200\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2021\/03\/cta-api-restful-perfil.png\" alt=\"\" class=\"wp-image-11864\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-perfil.png 720w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-perfil-150x42.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-perfil-100x28.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-perfil-600x167.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-perfil-450x125.png 450w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hateoas-e-restful\">HATEOAS e RESTful<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 aqui que se encontra a parte complicada. A restri\u00e7\u00e3o em que poucas APIs conseguem se enquadrar. O significado de &#8220;<strong>HATEOAS<\/strong>&#8221; denota muitas semelhan\u00e7as com algo que falaremos a seguir: a <strong>World Wide Web<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note que, a explora\u00e7\u00e3o das web pages na internet \u00e9 feita no que podemos chamar de &#8220;<em>caminhos<\/em>&#8220;, temos um ponto de partida e a partir dele encontramos as demais p\u00e1ginas. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A mesma l\u00f3gica se aplica as APIs RESTful. Basicamente, <strong>sua API deve ser um livro aberto<\/strong>, voc\u00ea n\u00e3o deve precisar de acesso a documenta\u00e7\u00e3o para saber que para adicionar um usu\u00e1rio a cole\u00e7\u00e3o, precisar\u00e1 de uma requisi\u00e7\u00e3o POST pra URL\/users. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deve ser poss\u00edvel descobrir todas as manipula\u00e7\u00f5es de seus recursos atrav\u00e9s da pr\u00f3pria <strong>API<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quais <strong>APIs<\/strong> que voc\u00ea conhece que fazem isso? Quais as que voc\u00ea consegue trabalhar sabendo apenas o dom\u00ednio inicial (ponto de partida) e o protocolo? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Possuir uma documenta\u00e7\u00e3o listando todos os recursos e a\u00e7\u00f5es dispon\u00edveis n\u00e3o \u00e9 o problema, o problema est\u00e1 em quando voc\u00ea n\u00e3o recebe os <em>hyperlinks<\/em> necess\u00e1rios ao fazer uma requisi\u00e7\u00e3o pra raiz da API, impedindo minha explora\u00e7\u00e3o dos dados e funcionalidades.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ou seja, isso indica que: sua <strong>API provavelmente n\u00e3o \u00e9 RESTful<\/strong>. E est\u00e1 tudo bem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-qual-a-diferen-a-entre-api-rest-e-restful\">Qual a diferen\u00e7a entre API REST e RESTful<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como explicado, para que uma API seja denominada RESTful, ela precisa de algumas propriedades espec\u00edficas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ent\u00e3o a diferen\u00e7a entre API REST e RESTful \u00e9 somente o cumprimento das exig\u00eancias que a arquitetura exige.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos dizer que uma Representational State Transfer (REST) \u00e9 uma abstra\u00e7\u00e3o da arquitetura da World Wide Web. \u00c9 um estilo arquitetural que consiste de um conjunto coordenado de restri\u00e7\u00f5es aplicadas a componentes, conectores e elementos de dados dentro de um sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O REST ignora os detalhes da implementa\u00e7\u00e3o de componente e a sintaxe de protocolo com o objetivo de focar nos pap\u00e9is dos componentes, nas restri\u00e7\u00f5es sobre sua intera\u00e7\u00e3o com outros componentes e na sua interpreta\u00e7\u00e3o de elementos de dados significantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Caso tenha ficado alguma d\u00favida, o v\u00eddeo abaixo explica a diferen\u00e7a de REST x RESTful! <\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Curso de RESTful: Diferen\u00e7a entre REST e RESTful\" width=\"1140\" height=\"641\" src=\"https:\/\/www.youtube.com\/embed\/7Cbd8WBGrq4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Entendido essa diferen\u00e7a e os conceitos, vamos para o contexto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-o-g-nesis-da-internet\"><strong>O G\u00eanesis da Internet<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"750\" height=\"500\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/11\/O-G\u00eanesis-da-Internet.jpg\" alt=\"API e RESTful  \" class=\"wp-image-8245\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-G\u00eanesis-da-Internet.jpg 750w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-G\u00eanesis-da-Internet-150x100.jpg 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-G\u00eanesis-da-Internet-100x67.jpg 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-G\u00eanesis-da-Internet-600x400.jpg 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/O-G\u00eanesis-da-Internet-450x300.jpg 450w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">E disse <strong>Tim Bernes-Lee<\/strong>: <em>&#8220;Que haja a World Wide Web<\/em>&#8220;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Era 1989, embora a internet j\u00e1 existisse, seu potencial ainda n\u00e3o era aproveitado. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Foi criada, ent\u00e3o, a <strong>World Wide Web<\/strong>, um sistema de informa\u00e7\u00e3o que, al\u00e9m de trazer a identifica\u00e7\u00e3o \u00fanica de recursos (<strong>Uniform Resource Locators &#8211; URL<\/strong>), possibilitou a liga\u00e7\u00e3o destes atrav\u00e9s de <em>hipertextos.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os recursos dispon\u00edveis na Web podem ser de qualquer tipo de m\u00eddia, por\u00e9m, as chamadas <em>web pages<\/em> eram escritas em um formato espec\u00edfico: o <strong>Hypertext Markup Language<\/strong> (<a rel=\"noreferrer noopener\" aria-label=\"HTML (abre numa nova aba)\" href=\"https:\/\/geekblogti.wpengine.com\/voce-conhece-html-semantico\/\" target=\"_blank\"><strong>HTML<\/strong><\/a>), linguagem de marca\u00e7\u00e3o que possibilita a liga\u00e7\u00e3o entre diferentes p\u00e1ginas atrav\u00e9s dos<em> hiperlinks<\/em>, criando, ent\u00e3o, a verdadeira teia de p\u00e1ginas na internet. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"496\" height=\"299\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/11\/webGraph1.gif\" alt=\"esquema api restful\" class=\"wp-image-8349\"\/><figcaption>Ilustra\u00e7\u00e3o do esquema de liga\u00e7\u00e3o entre p\u00e1ginas com HTML.<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Mas, pra isso tudo funcionar, era necess\u00e1rio um protocolo de comunica\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Foi quando surgiu o <strong>Hypertext Transfer Protocol<\/strong> (HTTP), muito conhecido hoje em dia. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O interessante \u00e9 que, na \u00e9poca, ele s\u00f3 era usado para transportar HTML. Bem diferente de hoje em dia, n\u00e3o \u00e9 mesmo? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At\u00e9 ent\u00e3o, eram usados outros protocolos de comunica\u00e7\u00e3o para transportar diferentes tipos de dados atrav\u00e9s do <strong><em>Remote Procedure Call<\/em><\/strong> (RPC), onde eram requisitados servi\u00e7os de outras m\u00e1quinas a fim de conseguir algum recurso em uma rede sem saber, necessariamente, detalhes dessa rede. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Foi em 1998 que Dave Winer resolveu juntar a Web com os Services existentes, criando os <strong><em>webservices.<\/em><\/strong> Sendo o primeiro deles, o XML-RPC. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.geekhunter.com.br\/vagas?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=sua_api_nao_e_restful_entenda_por_que\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"200\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2021\/03\/cta2-api-restful-vagas.png\" alt=\"\" class=\"wp-image-11862\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta2-api-restful-vagas.png 720w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta2-api-restful-vagas-150x42.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta2-api-restful-vagas-100x28.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta2-api-restful-vagas-600x167.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta2-api-restful-vagas-450x125.png 450w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-o-que-um-web-service-e-como-funciona\">O que \u00e9 um <strong>Web Service<\/strong> e como funciona<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"751\" height=\"501\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/11\/Web-Services.jpg\" alt=\"Web Services\" class=\"wp-image-8246\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Web-Services.jpg 751w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Web-Services-150x100.jpg 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Web-Services-100x67.jpg 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Web-Services-600x400.jpg 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Web-Services-450x300.jpg 450w\" sizes=\"(max-width: 751px) 100vw, 751px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Um Web service \u00e9 uma tecnologia que permite a comunica\u00e7\u00e3o independente entre aplica\u00e7\u00f5es, sem depender de linguagens ou sistemas operacionais. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No geral, essa comunica\u00e7\u00e3o acontece atrav\u00e9s de arquivos em formato XML. Sendo assim, independente da linguagem, tudo \u00e9 traduzido para XML. Entre eles, o <strong>XML-RPC<\/strong>, criado em cima do protocolo <strong>HTTP<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de certo tempo, o XML-RPC foi batizado com outro nome: <strong>Simple Object Access Protocol<\/strong> (SOAP).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sendo classificado, ent\u00e3o, como um protocolo de comunica\u00e7\u00e3o que fazia uso, em seus protocolos de mais baixo n\u00edvel, do HTTP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este protocolo era poderoso em termos de capacidade de exposi\u00e7\u00e3o dos dados aos interessados. Mas, apesar do nome, n\u00e3o tem nada de simples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em pouco tempo, o <strong>SOAP<\/strong> tornou-se um padr\u00e3o de mercado e era utilizado majoritariamente entre as organiza\u00e7\u00f5es. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas, precis\u00e1vamos de uma solu\u00e7\u00e3o melhor e mais simples. Foi a\u00ed que entraram as Web <strong>A<\/strong>pplication <strong>P<\/strong>rogramming <strong>I<\/strong>nterfaces (APIs) e o <strong>Re<\/strong>presentational <strong>S<\/strong>tate <strong>T<\/strong>ransfer (REST).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contexto entendido? Agora vem comigo para a sacada desse artigo.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><a href=\"https:\/\/geekblogti.wpengine.com\/algoritmos-de-recomendacao-o-que-sao-e-como-implementa-los\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Algoritmos de recomenda\u00e7\u00e3o<\/strong><\/a>: o que s\u00e3o e como implement\u00e1-los? <\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-os-padr-es-rest-nem-sempre-importam\"><strong>Os padr\u00f5es REST nem sempre importam<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"500\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2019\/11\/Os-padr\u00f5es-REST-nem-sempre-importam.jpg\" alt=\"padr\u00f5es REST\" class=\"wp-image-8248\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Os-padr\u00f5es-REST-nem-sempre-importam.jpg 750w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Os-padr\u00f5es-REST-nem-sempre-importam-150x100.jpg 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Os-padr\u00f5es-REST-nem-sempre-importam-100x67.jpg 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Os-padr\u00f5es-REST-nem-sempre-importam-600x400.jpg 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Os-padr\u00f5es-REST-nem-sempre-importam-450x300.jpg 450w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o importa se sua API \u00e9 RESTful ou n\u00e3o. Assim como boa parte das decis\u00f5es de arquitetura existentes, elas nem sempre atendem o problema da melhor maneira. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Talvez voc\u00ea esteja desenvolvendo uma <strong>API interna<\/strong>, onde voc\u00ea tem controle tanto do cliente quanto do servidor. Nesse caso, a parte da descoberta pode n\u00e3o trazer tanto retorno. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A decis\u00e3o \u00e9 sua. Ainda existem muitas coisas a serem aproveitadas na <strong>arquitetura REST<\/strong> e, apesar da sua API n\u00e3o atender todos os requisitos, talvez ela esteja de acordo em muitos pontos, aqui que entramos em algo chamado <em>Richardson Maturity Model.<\/em><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><a aria-label=\"XML vs JSON (abre numa nova aba)\" rel=\"noreferrer noopener\" href=\"https:\/\/geekblogti.wpengine.com\/xml-vs-json-entenda-como-fazer-a-melhor-escolha\/\" target=\"_blank\"><strong>XML vs JSON<\/strong><\/a>: Entenda como fazer a melhor escolha<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-richardson-maturity-model\"><strong>Richardson Maturity Model<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Como dito anteriormente, as APIs possuem<strong> diferentes graus de maturidade<\/strong> em rela\u00e7\u00e3o \u00e0s regras mais importantes da arquitetura REST.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Existe uma maneira simples de definir esse grau: o <strong>Richardson Maturity<\/strong> <strong>Model<\/strong>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta maneira sup\u00f5e diversas restri\u00e7\u00f5es de antem\u00e3o, visto que algumas delas s\u00e3o intr\u00ednsecas a arquitetura da web, ainda assim, pode ser uma boa base para classificar sua API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O modelo possui 4 n\u00edveis de maturidade (sendo 0 uma API que n\u00e3o atenda nenhuma das regras), os outros 3 s\u00e3o:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Recursos<\/strong>: A partir do momento em que seja poss\u00edvel fazer requisi\u00e7\u00f5es de diferentes recursos em diferentes <em>endpoints<\/em>. Sem a necessidade dos chamados <em>query parameters.<\/em><\/li><li><strong>Verbos HTTP<\/strong>: Aqui, os diferentes m\u00e9todos <strong>HTTP <\/strong>s\u00e3o colocados em pr\u00e1tica, em contraposi\u00e7\u00e3o ao uso quase exclusivo do <strong>POST<\/strong> no protocolo <strong>SOAP<\/strong>. Al\u00e9m disso, cada verbo possui sua utilidade espec\u00edfica: <strong>PUT<\/strong> para atualizar, <strong>DELETE<\/strong> para excluir, <strong>GET<\/strong> para adquirir e <strong>POST<\/strong> para criar. Em alguns casos o <strong>PATCH<\/strong> tamb\u00e9m \u00e9 utilizado.<\/li><li><strong>Hypermedia<\/strong>: Os recursos passam a possuir links para recursos relacionados, al\u00e9m de links para realizar a\u00e7\u00f5es em cima dessas cole\u00e7\u00f5es, a partir desse ponto, a API se auto-documenta e possibilita a funcionalidade de descoberta.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Cada n\u00edvel \u00e9 uma condi\u00e7\u00e3o para o pr\u00f3ximo, ou seja, para uma API possuir n\u00edvel 3, ela precisa primeiro chegar ao n\u00edvel 2 e 1. Voc\u00ea pode saber mais sobre o <a href=\"https:\/\/martinfowler.com\/articles\/richardsonMaturityModel.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>Modelo de Maturidade Richardson<\/strong><\/a> clicando aqui.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ficou alguma d\u00favida? Algum ponto que n\u00e3o abordamos que seria interessante para voc\u00ea? Comente aqui embaixo que iremos responder.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Esse artigo foi escrito pela equipe da empresa j\u00fanior da UFSC, <\/em><a href=\"https:\/\/www.pixel.ufsc.br\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong><em>Pixel<\/em><\/strong><\/a><em>.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.geekhunter.com.br\/vagas?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=sua_api_nao_e_restful_entenda_por_que\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"200\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2021\/03\/cta-api-restful-vagas.png\" alt=\"\" class=\"wp-image-11863\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-vagas.png 720w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-vagas-150x42.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-vagas-100x28.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-vagas-600x167.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2021\/03\/cta-api-restful-vagas-450x125.png 450w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>REST \u00e9 a abreviatura de Representational State Transfer, que em portugu\u00eas significa &#8220;Transfer\u00eancia de Estado Representacional&#8221;. REST \u00e9 uma de arquitetura de software, que possui algumas boas pr\u00e1ticas, definidas por Roy T. Fielding, para cria\u00e7\u00e3o de aplica\u00e7\u00f5es web. &#8220;Mas e a API, \u00e9 RESTful?&#8221; Todo desenvolvedor ao se deparar com uma API A resposta \u00e9 [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":8243,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[18],"tags":[],"class_list":["post-8239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimiento-de-software"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>RESTful: Sua API se encaixa nesse padr\u00e3o? - Blog Geekhunter<\/title>\n<meta name=\"description\" content=\"Voc\u00ea sabe o que \u00e9 uma API RESTful? Nesse artigo explicamos o que \u00e9 e por que, provavelmente, sua API n\u00e3o cumpre os requisitos.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sua API n\u00e3o \u00e9 RESTful: Entenda por qu\u00ea\" \/>\n<meta property=\"og:description\" content=\"REST \u00e9 a abreviatura de Representational State Transfer, que em portugu\u00eas significa &quot;Transfer\u00eancia de Estado Representacional&quot;. REST \u00e9 uma de arquitetura\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Geekhunter\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geekhunterbr\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-15T18:42:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-24T21:22:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Geekhunter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:site\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geekhunter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/\"},\"author\":{\"name\":\"Geekhunter\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\"},\"headline\":\"Sua API n\u00e3o \u00e9 RESTful: Entenda por qu\u00ea\",\"datePublished\":\"2021-03-15T18:42:05+00:00\",\"dateModified\":\"2024-09-24T21:22:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/\"},\"wordCount\":1696,\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg\",\"articleSection\":[\"Desenvolvimiento de software\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/\",\"name\":\"RESTful: Sua API se encaixa nesse padr\u00e3o? - Blog Geekhunter\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg\",\"datePublished\":\"2021-03-15T18:42:05+00:00\",\"dateModified\":\"2024-09-24T21:22:06+00:00\",\"description\":\"Voc\u00ea sabe o que \u00e9 uma API RESTful? Nesse artigo explicamos o que \u00e9 e por que, provavelmente, sua API n\u00e3o cumpre os requisitos.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg\",\"width\":960,\"height\":640,\"caption\":\"RESTful\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/sua-api-nao-e-restful-entenda-por-que\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mundo TI\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desenvolvimiento de software\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/desenvolvimiento-de-software\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Sua API n\u00e3o \u00e9 RESTful: Entenda por qu\u00ea\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"name\":\"Blog de TI\",\"description\":\"Dicas para o RH e profissionais da \u00e1rea TI\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\",\"name\":\"GeekHunter\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"width\":300,\"height\":300,\"caption\":\"GeekHunter\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/x.com\\\/geekhunterbr\",\"https:\\\/\\\/www.instagram.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/geekhunter-brasil\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GeekHunterOfficial\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\",\"name\":\"Geekhunter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"caption\":\"Geekhunter\"},\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/author\\\/matias\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"RESTful: Sua API se encaixa nesse padr\u00e3o? - Blog Geekhunter","description":"Voc\u00ea sabe o que \u00e9 uma API RESTful? Nesse artigo explicamos o que \u00e9 e por que, provavelmente, sua API n\u00e3o cumpre os requisitos.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/","og_locale":"pt_BR","og_type":"article","og_title":"Sua API n\u00e3o \u00e9 RESTful: Entenda por qu\u00ea","og_description":"REST \u00e9 a abreviatura de Representational State Transfer, que em portugu\u00eas significa \"Transfer\u00eancia de Estado Representacional\". REST \u00e9 uma de arquitetura","og_url":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/","og_site_name":"Blog Geekhunter","article_publisher":"https:\/\/www.facebook.com\/geekhunterbr\/","article_published_time":"2021-03-15T18:42:05+00:00","article_modified_time":"2024-09-24T21:22:06+00:00","og_image":[{"width":960,"height":640,"url":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg","type":"image\/jpeg"}],"author":"Geekhunter","twitter_card":"summary_large_image","twitter_creator":"@geekhunterbr","twitter_site":"@geekhunterbr","twitter_misc":{"Escrito por":"Geekhunter","Est. tempo de leitura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/#article","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/"},"author":{"name":"Geekhunter","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400"},"headline":"Sua API n\u00e3o \u00e9 RESTful: Entenda por qu\u00ea","datePublished":"2021-03-15T18:42:05+00:00","dateModified":"2024-09-24T21:22:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/"},"wordCount":1696,"publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg","articleSection":["Desenvolvimiento de software"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/","name":"RESTful: Sua API se encaixa nesse padr\u00e3o? - Blog Geekhunter","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/#primaryimage"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg","datePublished":"2021-03-15T18:42:05+00:00","dateModified":"2024-09-24T21:22:06+00:00","description":"Voc\u00ea sabe o que \u00e9 uma API RESTful? Nesse artigo explicamos o que \u00e9 e por que, provavelmente, sua API n\u00e3o cumpre os requisitos.","breadcrumb":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.geekhunter.com/pt/blog\/sua-api-nao-e-restful-entenda-por-que\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/#primaryimage","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2019\/11\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2019\/11\/Sua-API-n\u00e3o-\u00e9-RESTful-Entenda-por-qu\u00ea..jpg","width":960,"height":640,"caption":"RESTful"},{"@type":"BreadcrumbList","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/sua-api-nao-e-restful-entenda-por-que\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.geekhunter.com/pt/blog\/"},{"@type":"ListItem","position":2,"name":"Mundo TI","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/"},{"@type":"ListItem","position":3,"name":"Desenvolvimiento de software","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/desenvolvimiento-de-software\/"},{"@type":"ListItem","position":4,"name":"Sua API n\u00e3o \u00e9 RESTful: Entenda por qu\u00ea"}]},{"@type":"WebSite","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","name":"Blog de TI","description":"Dicas para o RH e profissionais da \u00e1rea TI","publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.geekhunter.com/pt/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization","name":"GeekHunter","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","width":300,"height":300,"caption":"GeekHunter"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/geekhunterbr\/","https:\/\/x.com\/geekhunterbr","https:\/\/www.instagram.com\/geekhunterbr\/","https:\/\/www.linkedin.com\/company\/geekhunter-brasil\/","https:\/\/www.youtube.com\/@GeekHunterOfficial"]},{"@type":"Person","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400","name":"Geekhunter","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","caption":"Geekhunter"},"url":"https:\/\/www.geekhunter.com\/pt\/blog\/author\/matias\/"}]}},"_links":{"self":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/8239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/users\/167"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/comments?post=8239"}],"version-history":[{"count":0,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/8239\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media\/8243"}],"wp:attachment":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media?parent=8239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/categories?post=8239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/tags?post=8239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}