O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Building Next-Gen Web APIswith JSON-LD and HydraMarkus Lanthaler
Why do weneed a website?Of course wehave a websiteWhy do weneed an API?1995 2000 2005 2010Of course wehave an APIAdapted f...
Using Web APIs is still challenging
Level 0:The Swamp of POXLevel 1: ResourcesLevel 2: HTTPVerbs
{"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012...
BILLION DOLLARQUESTIONthe
{"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012...
{"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012...
Level 0:The Swamp of POXLevel 1: ResourcesLevel 2: HTTPVerbsLevel 3: Hypermedia Controls
{"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012...
Every API is a snowflake
Result: tightly coupled & brittle systems
{"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012...
{69 64: 63 73 6f 32 39 61 7874 69 74 6c 65: 53 79 6d 66 6f 6e 79 20 4c 69 76 …64 65 73 63 72 69 70 74 69 6f 6e: 50 72 65 7...
Identifiers on the Web: URIs
Linked Data PrinciplesTim Berners-Lee, 2006
JSON-LD
Make data self-descriptive bymapping concepts to URLs
{"id": "markus","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
{"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://sc...
{"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://sc...
{"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://sc...
{"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://sc...
{"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": {"@id": "h...
{"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": {"@id": "h...
{"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": {"@id": "h...
{"@context": "/contexts/person.jsonld","@id": "/people/markus","@type": "http://schema.org/Person","firstname": "Markus","...
CMF
{"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012...
{"@context": "/ctx/context.jsonld","id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","...
{"@context": "/ctx/context.jsonld","id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","...
{"@id": "#comments","@type": "hydra:Link","supportedOperations": [{"@id": "#create-comment","@type": "hydra:CreateResource...
{"@id": "#Comment","@type": "hydra:Class","supportedProperties": [{"property": "#text","required": true,"readonly": false,...
/*** An Issue tracked by the system.** @HydraExpose()*/class Issue{/*** The comments associated with this issue** @HydraEx...
$ php app/console hydra:generate:crud--entity=MLDemoBundle:Issue--route-prefix=/issues/--with-write--no-interactionCRUD ge...
/*** Issue controller** @Route("/issues")*/class IssueController extends HydraController{/*** Creates a new Issue** @Route...
Hydra Console
© 2013, Markus Lanthaler. Some Rights Reserved.http://creativecommons.org/licenses/by-nc-sa/3.0/Thank You
Questions?Markus Lanthalerhttp://www.markus-lanthaler.com@MarkusLanthalermail@markus-lanthaler.com
Image Credits(1) http://www.flickr.com/photos/justinwkern/3729649672/(2) http://www.flickr.com/photos/alexdram/3095419858/...
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
Próximos SlideShares
Carregando em…5
×

Building Next-Generation Web APIs with JSON-LD and Hydra

38.045 visualizações

Publicada em

Presented at the Symfony Live Portland 2013 in Portland (Oregon), USA
The recording of the talk is available at http://bit.ly/sl-portland2013-video

Publicada em: Tecnologia
  • Hi there! I just wanted to share a list of sites that helped me a lot during my studies: .................................................................................................................................... www.EssayWrite.best - Write an essay .................................................................................................................................... www.LitReview.xyz - Summary of books .................................................................................................................................... www.Coursework.best - Online coursework .................................................................................................................................... www.Dissertations.me - proquest dissertations .................................................................................................................................... www.ReMovie.club - Movies reviews .................................................................................................................................... www.WebSlides.vip - Best powerpoint presentations .................................................................................................................................... www.WritePaper.info - Write a research paper .................................................................................................................................... www.EddyHelp.com - Homework help online .................................................................................................................................... www.MyResumeHelp.net - Professional resume writing service .................................................................................................................................. www.HelpWriting.net - Help with writing any papers ......................................................................................................................................... Save so as not to lose
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Dating for everyone is here: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Dating direct: ❶❶❶ http://bit.ly/36cXjBY ❶❶❶
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Copas Url to Read PDF Format === http://ebookdfsrewsa.justdied.com/B01FM6OYOO-corossol-proprietes-curatives-et-comment-consommer-description-de-corossol-ou-graviola-fruits-annona-muricat-proprietes-curatives-les-etudes-scientifiques-de-consommer-casa-bartomeus-fr-t-1.html
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE Format, ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Building Next-Generation Web APIs with JSON-LD and Hydra

  1. 1. Building Next-Gen Web APIswith JSON-LD and HydraMarkus Lanthaler
  2. 2. Why do weneed a website?Of course wehave a websiteWhy do weneed an API?1995 2000 2005 2010Of course wehave an APIAdapted from T. Vitvar’s and J. Musser’s ECOWS 2010 Keynote,“ProgrammableWeb.com:Statistics, Trends, and Best Practices”
  3. 3. Using Web APIs is still challenging
  4. 4. Level 0:The Swamp of POXLevel 1: ResourcesLevel 2: HTTPVerbs
  5. 5. {"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z"}http://example.com/issues/cso29ax
  6. 6. BILLION DOLLARQUESTIONthe
  7. 7. {"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z"}http://example.com/issues/cso29axhttp://example.com/issue/{id}/comments/
  8. 8. {"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z","comments": "/issues/cso29ax/comments/"}http://example.com/issues/cso29ax
  9. 9. Level 0:The Swamp of POXLevel 1: ResourcesLevel 2: HTTPVerbsLevel 3: Hypermedia Controls
  10. 10. {"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z","comments": "/issues/cso29ax/comments/"}http://example.com/issues/cso29ax
  11. 11. Every API is a snowflake
  12. 12. Result: tightly coupled & brittle systems
  13. 13. {"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z","comments": "/issues/cso29ax/comments/"}http://example.com/issues/cso29ax
  14. 14. {69 64: 63 73 6f 32 39 61 7874 69 74 6c 65: 53 79 6d 66 6f 6e 79 20 4c 69 76 …64 65 73 63 72 69 70 74 69 6f 6e: 50 72 65 70 61 …69 73 5f 6f 70 65 6e: 0163 72 65 61 74 65 64 5f 61 74: 32 30 31 32 2d 31 …63 6f 6d 6d 65 6e 74 73: 2f 69 73 73 75 65 73 2f …}http://example.com/issues/cso29ax
  15. 15. Identifiers on the Web: URIs
  16. 16. Linked Data PrinciplesTim Berners-Lee, 2006
  17. 17. JSON-LD
  18. 18. Make data self-descriptive bymapping concepts to URLs
  19. 19. {"id": "markus","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  20. 20. {"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://schema.org/url"},"id": "markus","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  21. 21. {"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://schema.org/url"},"@id": "/people/markus","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  22. 22. {"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://schema.org/url"},"@id": "/people/markus","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  23. 23. {"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": "http://schema.org/url"},"@id": "/people/markus","firstname": "Markus","lastname": "Lanthaler","homepage": { "@id": "http://www.markus-lanthaler.com/" }}
  24. 24. {"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": {"@id": "http://schema.org/url", "@type": "@id" },},"@id": "/people/markus","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  25. 25. {"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": {"@id": "http://schema.org/url", "@type": "@id" }},"@id": "/people/markus","@type": "http://schema.org/Person","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  26. 26. {"@context": {"firstname": "http://schema.org/givenName","lastname": "http://schema.org/familyName","homepage": {"@id": "http://schema.org/url", "@type": "@id" }},"@id": "/people/markus","@type": "http://schema.org/Person","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  27. 27. {"@context": "/contexts/person.jsonld","@id": "/people/markus","@type": "http://schema.org/Person","firstname": "Markus","lastname": "Lanthaler","homepage": "http://www.markus-lanthaler.com/"}
  28. 28. CMF
  29. 29. {"id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z","comments": "/issues/cso29ax/comments/"}http://example.com/issues/cso29ax
  30. 30. {"@context": "/ctx/context.jsonld","id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z","comments": "/issues/cso29ax/comments/"}http://example.com/issues/cso29ax
  31. 31. {"@context": "/ctx/context.jsonld","id": "cso29ax","title": "Symfony Live Portland 2013","description": "Prepare slides","is_open": true,"created_at": "2012-11-26T04:49:44Z","comments": "/issues/cso29ax/comments/"}http://example.com/issues/cso29ax
  32. 32. {"@id": "#comments","@type": "hydra:Link","supportedOperations": [{"@id": "#create-comment","@type": "hydra:CreateResourceOperation","label": "Creates a new comment","method": "POST","expects": "#Comment","returns": "#Comment"}]}http://example.com/api/doc
  33. 33. {"@id": "#Comment","@type": "hydra:Class","supportedProperties": [{"property": "#text","required": true,"readonly": false,"writeonly": false}]}http://example.com/api/doc
  34. 34. /*** An Issue tracked by the system.** @HydraExpose()*/class Issue{/*** The comments associated with this issue** @HydraExpose()* @HydraCollection("issue_comments")* @HydraOperations("issue_comment_create")*/private $comments;// ... other members and methods ...}
  35. 35. $ php app/console hydra:generate:crud--entity=MLDemoBundle:Issue--route-prefix=/issues/--with-write--no-interactionCRUD generationGenerating the CRUD code: OKYou can now start using the generated code!
  36. 36. /*** Issue controller** @Route("/issues")*/class IssueController extends HydraController{/*** Creates a new Issue** @Route("/", name="issue_create")* @Method("POST")** @HydraOperation(expect = "MLDemoBundleEntityIssue")** @return MLDemoBundleEntityIssue*/public function collectionPostAction(Request $request){...
  37. 37. Hydra Console
  38. 38. © 2013, Markus Lanthaler. Some Rights Reserved.http://creativecommons.org/licenses/by-nc-sa/3.0/Thank You
  39. 39. Questions?Markus Lanthalerhttp://www.markus-lanthaler.com@MarkusLanthalermail@markus-lanthaler.com
  40. 40. Image Credits(1) http://www.flickr.com/photos/justinwkern/3729649672/(2) http://www.flickr.com/photos/alexdram/3095419858/(3) http://www.flickr.com/photos/kaptainkobold/3203311346/(11) http://info.cern.ch/hypertext/WWW/TheProject.html(15) Adapted from http://www.flickr.com/photos/nebarnix/361650027/(16) http://www.flickr.com/photos/joyoflife/1570126182/(19) http://www.flickr.com/photos/rossiprojects/5592552858/(21) http://www.flickr.com/photos/rossiprojects/5592552858/(23) http://www.flickr.com/photos/clevercupcakes/4397152402/(31) http://schema.org/Person(36) http://www.vonwong.com/(42) http://www.flickr.com/photos/jakecaptive/3205277810/(47) http://www.flickr.com/photos/sis/126152933/

×