<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-01-26 18:14 GMT-02:00 Leonardo Ruoso <span dir="ltr"><<a href="mailto:leonardo@ruoso.com" target="_blank">leonardo@ruoso.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Em 26 de janeiro de 2015 14:54, Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span> escreveu:<br><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Eu posso me juntar, mas já digo que eu só faço API's REST, não RESTFul,</div></blockquote></span><div><div>Rest ou Restful:</div><div><br></div><div>Se não é hyperdocument não é Rest. </div></div><div>Se tem informação out-of-band não é Rest. </div></div></div></div></blockquote><div> </div><div> Se informações out-of-band são informações que fazem o protocolo ser stateful, sim, é web[1], não é REST!</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> </div><div>Quem disse que a API tem de ser Rest e não JSON-RPC ou XML-RPC?</div></div></div></div></blockquote><div><br></div><div>Boa pergunta, não sei... algum preconceito com o RPC, provavelmente.  Mas pode estar mudando com a chegada de microservices</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"> e que nunca ouvi falar de HyperDocument</div></blockquote><div><br></div></span><div>HyperDocument é basicamente como a WWW funciona :p</div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"> e que linked-data pra mim tem que ser em RDF!</div></blockquote><div><br></div></span><div>LinkedData pode ser RDF, mas pode ser JSON-LD também.<br></div></div></div></div></blockquote><div>Concordo.</div><div><br>Um ponto interessante, é que, ao meu ver, para consultar as informações com SPARQL é bem devagar se comparar com os bancos tradicionais, embora tenha alguns bancos especializados neste tipo de operações.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div><br></div><div>Renato, e Hateoas?</div></div></div></div></blockquote><div>Nunca implementei este conceito.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><div><div class="gmail_extra"><span><font color="#888888"><br clear="all"><div><br></div></font></span></div></div></span></div></div></div></blockquote><div>[1]  considerando que muita gente faz coisa errada com os cookies, aka, salvar informações 'out of band'</div><div><br></div><div>Nas API's que geralmente faço, apenas no 'CREATE' do recurso, que eu retorno o header Location com o URI do objecto criado.</div><div>Mas pensando bem, não seria difícil expandir os resultados para retornar a URI dos recursos em todos os lugares, ex:</div><div><font face="monospace, monospace"><br></font></div><div><div><font face="monospace, monospace">GET /books</font></div><div><font face="monospace, monospace">===</font></div><div><font face="monospace, monospace">200 OK</font></div><div><font face="monospace, monospace">content-type: application/json</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">{ rows: [ { uri: "/books/barz-mozz", name => "barz", author => { uri => "/author/mozz-2", name => "mozz" }  }, { uri: "/books/2", name => "pous", ... } ], has_more: 0 }</font></div><div><font face="monospace, monospace"><br></font></div></div><div><div><font face="monospace, monospace">GET /books/barz-mozz-2</font></div><div><font face="monospace, monospace">===</font></div><div><font face="monospace, monospace">200 OK</font></div><div><font face="monospace, monospace">content-type: application/json</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">{ self: { uri: "/foo/1", name => "barz"  }, result_of => "/foo" }</font></div><div><br></div></div><div>=====</div><div><br></div><div>não querendo fugir do assunto, mas eu estou no momento pensando muito mais em desnormalização, bancos(ideologia) "append-only" e versionamento do que no protocolo da API.</div><div><br></div><div>Acho que podemos começar pelo banco, até subir e chegar na camada de apresentação/input.</div></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div><div><div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div></div>
</div></div>