Imagine que queremos obter nome e email de uma pessoa na API do Linkedin. Chamamos:
GET http://api.linkedin.com/v2/people/123
Teríamos como resposta:
<person uri=“urn:linkedin:v2:people/123” key=“123”>
<id>123</id>
<name>Reid Hoffman</name>
<first-name>Reid</first-name>
<last-name>Hoffman</last-name>
<email>reid@linkedin.com</email>
<headline>Entrepreneur. Product Strategist. Investor.</headline>
<best-friend uri=“urn:linkedin:v2:people/456”/>
</person>
Além do nome e email vieram um bando de informações a mais.
Mas o Linkedin, assim como o Google GData e o Facebook Graph API, tem o que eles chamam de field selectors, uma maneira de você filtrar os campos retornados:
GET http://api.linkedin.com/v2/people/123:(name,email)
Na resposta, teríamos só as informações de nome e email!
<person uri=“urn:linkedin:v2:people/123” key=“123”>
<name>Reid Hoffman</name>
<email>reid@linkedin.com</email>
</person>
- Palestra de 2009 do Linkedin que mostra a técnica de field selectors: http://pt.slideshare.net/linkedin/building-consistent-restful-apis-in-a-highperformance-environment
- Documentação sobre field selectors no Linkedin: https://developer-programs.linkedin.com/documents/field-selectors e https://developer-programs.linkedin.com/blog/tips-and-tricks-field-selectors
- Artigo de 2013 no InfoQ que mostra
Yoga
, uma biblioteca que estende oJAX-RS
para fornecer field-selectors: http://www.infoq.com/articles/json-yoga - Biblioteca
Yoga
no GitHub: https://github.com/skyscreamer/yoga - Field expasion, funcionalidade parecida na API do Facebook: https://developers.facebook.com/docs/graph-api/using-graph-api/v2.5#fieldexpansion
- Partial responses, funcionalidade parecida nas API do Google: https://developers.google.com/+/web/api/rest/#partial-example