Simplemente REST

331
-1

Published on

Internet hoy en día, es un sistema muy grande, distribuido, y con piezas en cada uno de los rincones del mundo. Conectar cada uno de los componentes no es una tarea fácil, ni mucho menos sencilla. En esta charla hablaremos de los beneficios que la arquitectura de diseño REST le trajo a la web, mostrando ejemplos concretos sobre su uso, y casos de éxito. Además, realizaremos una introducción de los conceptos básicos, y mostraremos una serie de pasos y consejos para crear aplicaciones REST, y entender aquellas que se ofrecen a lo largo de la web. Finalmente, dedicaremos un momento a comentar sobre los principales agregados que tiene REST, que hacen de la arquitectura algo mejor y más completo. Hablaremos de autenticación y seguridad, paginado, manejo de errores, y más.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
331
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Simplemente REST

  1. 1. Simplemente REST Gabriel Fagúndez de los Reyes
  2. 2. 2.500.000.000 usuarios
  3. 3. 60.000.000.000.000.000.000 páginas
  4. 4. 9.000.000 Facebook apps
  5. 5. ¿Habrán imaginado este crecimiento al momento de "inventar" la web?
  6. 6. NO
  7. 7. La evolución de Internet, reveló una necesidad...
  8. 8. Protocolo de comunicación entre clientes y servicios web
  9. 9. CORBA XML-RPC SOAP
  10. 10. REST Representational State Transfer
  11. 11. ¿Qué es REST?
  12. 12. ¿Qué necesidad cubre?
  13. 13. API Interfaz de programación de aplicaciones
  14. 14. JSON JavaScript Object Notation
  15. 15. Demo_
  16. 16. Aplicando REST en 4 pasos
  17. 17. Elementos de información
  18. 18. Elementos de información users
  19. 19. Acceso a los elementos de información
  20. 20. Acceso a los elementos de información /users/:id
  21. 21. Códigos de estado HTTP
  22. 22. Códigos de estado HTTP [200 OK]
  23. 23. Comunicación sin estado
  24. 24. Comunicación sin estado /users/gabrielfagundez/repos
  25. 25. Tips :)
  26. 26. GET https://api.github.com?type=users&id=captainkidd
  27. 27. GET https://api.github.com?type=users&id=captainkidd Usa recursos para acceder a los objetos
  28. 28. GET https://api.github.com?type=users&id=captainkidd GET https://api.github.com/users/captainkidd
  29. 29. GET https://api.github.com/users/captainkidd/edit
  30. 30. GET https://api.github.com/users/captainkidd/edit URIs únicas, sin acciones
  31. 31. GET https://api.github.com/users/captainkidd/edit PUT https://api.github.com/users/captainkidd
  32. 32. GET https://api.github.com/users/captainkidd/repos.pdf
  33. 33. GET https://api.github.com/users/captainkidd/repos.pdf URIs independientes del formato
  34. 34. GET https://api.github.com/users/captainkidd/repos.pdf GET https://api.github.com/users/captainkidd/repos Accept: application/pdf
  35. 35. GET https://api.github.com/gists/page/22/per_page/2
  36. 36. GET https://api.github.com/gists/page/22/per_page/2 Operaciones y filtrado con parámetros
  37. 37. GET https://api.github.com/gists/page/22/per_page/2 GET https://api.github.com/gists?page=22&per_page=2
  38. 38. GET https://api.github.com/users/captainkidd/repos
  39. 39. GET https://api.github.com/users/captainkidd/repos Estructura lógica
  40. 40. No reinventes la rueda, usa HTTP
  41. 41. GET “¿Me das este recurso?”
  42. 42. POST “Tomá, poné esta información en su lugar”
  43. 43. PUT “Tomá información actualizada, sustituí el anterior objeto”
  44. 44. PATCH “Cambiá parte de la información por ésta que te envío”
  45. 45. DELETE “Borralo”
  46. 46. HEAD “Solo dame los cabezales, quiero saber si mi información está ahí”
  47. 47. Y ante cada consulta, una respuesta
  48. 48. Success
  49. 49. 200 OK Success
  50. 50. 200 OK 201 Created Success
  51. 51. 200 OK 201 Created Success 202 Accepted
  52. 52. 200 204 OK No Content 201 Created Success 202 Accepted
  53. 53. 200 204 OK No Content 201 Created Success 202 Accepted 206 Partial Content
  54. 54. Redirection
  55. 55. 301 Moved Permanently Redirection
  56. 56. 301 Moved Permanently 304 Not Modified Redirection
  57. 57. 301 Moved Permanently 304 Not Modified Redirection 307 Temporary Redirect
  58. 58. Client Error
  59. 59. 400 Bad Request Client Error
  60. 60. 400 Bad Request Client Error 401 Unauthorized
  61. 61. 400 Bad Request Client Error 402 Payment Required 401 Unauthorized
  62. 62. 404 400 Not Found Bad Request Client Error 402 Payment Required 401 Unauthorized
  63. 63. 404 400 Not Found Bad Request Client Error 402 Payment Required 408 Request Timeout 401 Unauthorized
  64. 64. 404 400 Bad Request Not Found 412 Precondition Failed Client Error 402 Payment Required 408 Request Timeout 401 Unauthorized
  65. 65. Server Error
  66. 66. 500 Internal Server Error Server Error
  67. 67. 500 Internal Server Error 501 Not Implemented Server Error
  68. 68. 500 Internal Server Error 501 Not Implemented Server Error 503 Service Unavailable
  69. 69. Simple.
  70. 70. Beyond REST...
  71. 71. Headers Caché Manejo de errores Seguridad
  72. 72. Headers Metadata
  73. 73. Accept: text/plain
  74. 74. Caché Performance
  75. 75. Proxy - HTTP
  76. 76. Manejo de Errores Errores para humanos
  77. 77. HTTP/1.1 415 Unsupported Media Type { "message": "<...> Must accept 'application/json'.", "documentation_url": "http://developer.github.com/v3" }
  78. 78. Seguridad Acceso controlado
  79. 79. Basic Authentication Nombre de usuario y contraseña
  80. 80. curl -X GET https://api.github.com/users/gabrielfagundez -i -H 'Authorization: Basic QNfosnd$eF30fmFppPw12ddD1s=='
  81. 81. OAuth V2
  82. 82. OAuth V2
  83. 83. APP
  84. 84. "La simplicidad es la mayor sofisticación" Leonardo da Vinci
  85. 85. ¿Preguntas? @gabrielfagundez
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×