ebook img

REST: Construa API’s inteligentes de maneira simples PDF

107 Pages·2014·5.48 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview REST: Construa API’s inteligentes de maneira simples

© CasadoCódigo TodososdireitosreservadoseprotegidospelaLeinº9.610,de10/02/1998. Nenhumapartedestelivropoderáserreproduzida,nemtransmitida,semauto- rizaçãopréviaporescritodaeditora,sejamquaisforemosmeios: fotográficos, eletrônicos,mecânicos,gravaçãoouquaisqueroutros. CasadoCódigo Livrosparaoprogramador RuaVergueiro,3185-8ºandar 04101-300–VilaMariana–SãoPaulo–SP–Brasil CasadoCódigo Sumário Sumário 1 PorqueutilizarREST? 1 1.1 HTMLtradicionalversusREST . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Webservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 DesenvolvendoumprotótipodewebserviceREST . . . . . . . . . . . 6 1.5 AvançandooprotótipodewebserviceREST . . . . . . . . . . . . . . 9 1.6 Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 OprotocoloHTTP 13 2.1 OsfundamentosdoHTTP . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 MétodosHTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 Tiposdepassagemdeparâmetros . . . . . . . . . . . . . . . . . . . . . 17 2.4 Cabeçalhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.5 MediaTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6 Códigosdestatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.7 Conclusão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3 ConceitosdeREST 29 3.1 Semânticasderecursos . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2 Interaçãopormétodos . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3 Representaçõesdistintas . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.4 Usocorretodestatuscodes . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.5 HATEOAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6 Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 i Sumário CasadoCódigo 4 Tiposdedados 39 4.1 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2 FerramentalXML:conhecendoosXMLSchemas . . . . . . . . . . . . 40 4.3 TrabalhandocomXMLutilizandoJAXB . . . . . . . . . . . . . . . . . 49 4.4 TestandooXMLgerado. . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.5 UtilizandoJAXBsemumXMLSchema . . . . . . . . . . . . . . . . . 55 4.6 JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.7 TrabalhandocomJSONutilizandoJAXB . . . . . . . . . . . . . . . . . 58 4.8 ValidaçãodeJSONcomJSONSchema . . . . . . . . . . . . . . . . . . 62 4.9 Conclusão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5 ImplementandoserviçosRESTemJavacomServlets 69 5.1 UmaimplementaçãocomServlets. . . . . . . . . . . . . . . . . . . . . 69 5.2 Implementandonegociaçãodeconteúdo . . . . . . . . . . . . . . . . . 81 5.3 Implementandoabuscaporumacervejaespecífica . . . . . . . . . . . 83 5.4 Implementandoacriaçãodeumrecurso . . . . . . . . . . . . . . . . . 89 5.5 Implementandonegociaçãodeconteúdonacriaçãodorecurso . . . . 95 5.6 Conclusão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Bibliografia 101 Versão:16.3.8 ii Capítulo1 Por que utilizar REST? “Nãoémerecedordofavodemelaquelequeevitaacolméiaporqueasabelhastêm ferrões” –WilliamShakespeare Vocêéumempreendedor. Seguindoafilosofiadeumastartup, vocêquerpro- duzirumsiteparaseuproduto,umalojadecervejasfinaspelainternet.Assim,você querfazerumsistemaquesejarápidodeproduzire,aomesmotempo,sejaeficiente efácildereutilizaremváriosambientesdiferentes(vocêestáconsiderandoumaver- sãomobileparaosistema).Assim,vocêexploradiversaspossibilidades. 1.1 HTML tradicional versus REST Vocêdecideavaliar,antesdetudo,sistemastradicionaisweb,baseadosemformulá- riosHTML. Ficaclaroparavocêquefazerumsistematradicional,baseadoemformulários HTML,estáforadequestão. Issoporqueessetipodeformulárioéclaramenteoti- 1.2. Webservices CasadoCódigo mizadoparatrabalharcomsistemasbaseadosnaweb,masvocênãotemcertezaem relaçãoaoquantoeleseráflexívelparatrabalharcomoutrostiposdefront-end. Por exemplo,considereumatelaparacadastrodosclientesdosite: <html> <body> <form action="/cadastrar" method="post"> <input type="text" name="nome" /> <input type="text" name="dataNascimento" /> <input type="submit" value="Cadastrar" /> </form> </body> </html> Estecódigo(comumpoucomaisdetratamento)deveteatenderbem. Noen- tanto, após submeter o formulário, o servidor deve te trazer uma página HTML - o que, obviamente, não é desejável num cenário com vários front-ends, como um aplicativoparaAndroidouiOS. Suapróximapossibilidadeé,portanto,avaliaroutrostiposdesistemas. 1.2 Web services Opróximocenárioquevemàsuamenteéodeusodewebservicestradicionais,ou seja,baseadosemSOAP(SimpleObjectAccessProtocol).Aprincípio,tepareceuma boaidéia,jáqueéomecanismodetráfegodeinformaçõeséviaXMLe,portanto,é possívelinteragircomserviçosdessetipoapartirdecódigojavascript(ouseja,pos- sibilitandoainteraçãotantoapartirdeumbrowserquantoapartirdecódigopuro). Porém,estudandomaisvocêpercebequeinteragircomestetipodewebservicenãoé tãosimplesquantovocêgostaria.Porexemplo,paralistarosclientesdoseusistema, énecessárioenviaroseguinteXMLparaoservidor: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <listarClientes xmlns="http://brejaonline.com.br/administracao/1.0/service" /> </soap:Body> </soap:Envelope> Aoquevocêreceberácomoresposta: <soap:Envelope xmlns:domain="http://brejaonline.com.br/administracao/1.0/domain" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 2 CasadoCódigo Capítulo1. PorqueutilizarREST? <soap:Body> <listarClientesResponse xmlns="http://brejaonline.com.br/administracao/1.0/service"> <domain:clientes> <domain:cliente domain:id="1"> <domain:nome>Alexandre</domain:nome> <domain:dataNascimento>2012-12-01</domain:dataNascimento> </domain:cliente> <domain:cliente domain:id="2"> <domain:nome>Paulo</domain:nome> <domain:dataNascimento>2012-11-01</domain:dataNascimento> </domain:cliente> </domain:clientes> </listarClientesResponse> </soap:Body> </soap:Envelope> Este código, então, te parece complicado demais para uma simples requisição delistagemdeclientes. Acomplexidade(everbosidade)doprotocoloficaespecial- menteevidentequandovocêpensanocasodacomunicaçãofeitacomplataformas móveis,ondeacomunicaçãopelarededeveseramaissucintapossível. 1.3 REST VocêestudamaisarespeitodewebservicesquandovocêlêsobreserviçosREST.Ao estudarsobreoassunto, tepareceumatécnicasimples. Porexemplo, pararealizar a listagem de clientes do seu sistema, você pode utilizar o navegador (seja este o Chrome, Firefox, Internet Explorer ou qualquer outro) paraabrira URL http://localhost:8080/cervejaria/clientes. Aofazerisso,vocêpodeobteroseguintere- sultado: <clientes> <cliente id="1"> <nome>Alexandre</nome> <dataNascimento>2012-12-01</dataNascimento> </cliente> <cliente id="2"> <nome>Paulo</nome> <dataNascimento>2012-11-01</dataNascimento> </cliente> </clientes> 3 1.3. REST CasadoCódigo Mas,afinal,comofazerseucódigointeragircomestalistagem?Oqueaconteceu? OsprincípiosbásicosdeREST REST significa REpresentational State Transfer (ou Transferência de Estado Representativo,emtraduçãolivre),eéumestilodedesenvolvimento de web services que teve origem na tese de doutorado de Roy Fielding. Este, por sua vez, é co-autor de um dos protocolos mais utilizados no mundo, o HTTP ( HyperText Transfer Protocol).Assim,énotávelqueoprotocoloRESTégui- ado(dentreoutrospreceitos)peloqueseriamasboaspráticasdeusodeHTTP: • UsoadequadodosmétodosHTTP; • UsoadequadodeURL’s; • Usodecódigosdestatuspadronizadospararepresentaçãodesucessosoufa- lhas; • UsoadequadodecabeçalhosHTTP; • Interligaçõesentreváriosrecursosdiferentes. Opropósitodestelivroé,portanto,exemplificaroquesãoestaspráticaseguiar você,leitor,atravésdasmesmasefornecerosinsumosdecomoconstruirseuspró- priosserviços,demaneiraqueestessejamsempretãoescaláveis,reutilizáveisema- nuteníveisquantopossível. AsfundaçõesdeREST O“marcozero”deRESTéorecurso. EmREST,tudoédefinidoemtermosde recursos, sendoestesosconjuntosdedadosquesãotrafegadospeloprotocolo. Os recursossãorepresentadosporURI’s.Noteque,naweb,URI’seURL’ssãoessencial- menteamesmacoisa-razãopelaqualvouusarosdoistermosnestelivrodeforma intercalada. 4

Description:
De alguma maneira, os sistemas modernos precisam se integrar com outros sistemas, seja para coletar dados, enviar informações, autenticação e muito mais funcionalidades. Nesse livro, Alexandre Saudate ensina como implementar APIs REST, que são simples e fáceis de manter, indo desde o básico d
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.