RESTAsier Marqués@asiermarques
linkedin.com/in/asierDirector en SimettricDirector técnico en 4visionshq.com#elcomite#bilbostack#pucelatechday
HTTP - RFC 2616RequestResponse
RequestGET /usuariosAccept: text/html, application/json
ResponseGET /usuariosStatus Code: 200Content Type: application/json
RequestGET /usuariosAccept: application/lechazo+xml
ResponseGET /usuariosStatus Code: 415, unsupported media type
RESTRepresentational State TransferHTTPAño 2000
Las reglas de oroNo guardar estado en el backendBackend y cliente están desacopladosBuen nombre de URIsUso correcto de HTTP
Richardson Madurity ModelNivel 1 – Uso correcto de las URIsNivel 2 – Uso correcto de HTTPNivel 3 – Hypermedia
Nivel 1
Recursos y URIsCada información con la que queramostrabajar es un recurso.Usamos URLs, un tipo de URI que identifica yloca...
RecursosUn listado de usuarios   → /usuariosUn usuario               → /usuarios/{id}
Nombrar recursosUsamos nombres, no verbosUtilizamos una estructura jerárquicaEvitamos añadir:–   Nombres de formatos–   Ex...
IncorrectoPerfil de usuario    → /getUser/{id}Edición de usuario   → /users/{id}/editPaginación de listado → /users/page/{...
CorrectoPerfil de usuario      → /users/{id}Edición de usuario     → /users/{id}Paginación de listado → /users?page={page}...
FormatosIncorrectoGET /user/{id}.xmlAccept: text/htmlCorrectoGET /user/{id}Accept: application/xml
Contenidos parcialesGET /usuario/{id}?campos=id,nombre,emailStatus Code: 206
Nivel 2
Métodos HTTP●   Leer                  → GET●   Crear                 → POST●   Editar                → PUT●   Editar parci...
Códigos de estado HTTPNo reinventar la ruedaRFC 2616 – Sección 10Tipos–   Información                  → 1XX–   Éxito     ...
Tipo de contenido HTTPAcceptContent Type
Validación ETag HTTPEtagif-none-matchif-match
Nivel 3 - Hypermedia
HypermediaEnlazamos recursos.Añadimos información adicional al recursopara indicar cómo se relaciona con otros.Utilizamos ...
GET /pedido/{id}<pedido> <id>666</id> <estado>Procesado</estado> <links>  <link rel=”factura”>     http://lechazo.org/api/...
GET /pedido/{id}RequestAccept: application/custom+xml, application/xmlResponseContent Type: application/custom+xml
JSON HALJSON Hypertext Application Languagehttp://tools.ietf.org/html/draft-kelly-json-hal-00{    “id”: 666    “_links”: {...
VersionesEn la URI:            → /api/v1/recursoComo parámetro http   → /api/recurso?v=1.0Como header http      → v=1 /api...
SeguridadAutenticación HTTP (:S)Sistema propio basado en tokensOAuth2Gateways: Layer7, apigee enterprise, 3scale...+ HTTPs...
Gracias!@asiermarquesasier@simettric.com
Upcoming SlideShare
Loading in …5
×

Servicios REST - PucelaTechDay

2,553 views
2,425 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,553
On SlideShare
0
From Embeds
0
Number of Embeds
857
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Servicios REST - PucelaTechDay

  1. 1. RESTAsier Marqués@asiermarques
  2. 2. linkedin.com/in/asierDirector en SimettricDirector técnico en 4visionshq.com#elcomite#bilbostack#pucelatechday
  3. 3. HTTP - RFC 2616RequestResponse
  4. 4. RequestGET /usuariosAccept: text/html, application/json
  5. 5. ResponseGET /usuariosStatus Code: 200Content Type: application/json
  6. 6. RequestGET /usuariosAccept: application/lechazo+xml
  7. 7. ResponseGET /usuariosStatus Code: 415, unsupported media type
  8. 8. RESTRepresentational State TransferHTTPAño 2000
  9. 9. Las reglas de oroNo guardar estado en el backendBackend y cliente están desacopladosBuen nombre de URIsUso correcto de HTTP
  10. 10. Richardson Madurity ModelNivel 1 – Uso correcto de las URIsNivel 2 – Uso correcto de HTTPNivel 3 – Hypermedia
  11. 11. Nivel 1
  12. 12. Recursos y URIsCada información con la que queramostrabajar es un recurso.Usamos URLs, un tipo de URI que identifica ylocaliza un recurso
  13. 13. RecursosUn listado de usuarios → /usuariosUn usuario → /usuarios/{id}
  14. 14. Nombrar recursosUsamos nombres, no verbosUtilizamos una estructura jerárquicaEvitamos añadir:– Nombres de formatos– Extensiones– Filtros, órdenes paginaciones
  15. 15. IncorrectoPerfil de usuario → /getUser/{id}Edición de usuario → /users/{id}/editPaginación de listado → /users/page/{page}Relaciones → /invoices/user/{id}
  16. 16. CorrectoPerfil de usuario → /users/{id}Edición de usuario → /users/{id}Paginación de listado → /users?page={page}Relaciones → /user/{id}/invoices
  17. 17. FormatosIncorrectoGET /user/{id}.xmlAccept: text/htmlCorrectoGET /user/{id}Accept: application/xml
  18. 18. Contenidos parcialesGET /usuario/{id}?campos=id,nombre,emailStatus Code: 206
  19. 19. Nivel 2
  20. 20. Métodos HTTP● Leer → GET● Crear → POST● Editar → PUT● Editar parcialmente → PATCH● Eliminar → DELETE
  21. 21. Códigos de estado HTTPNo reinventar la ruedaRFC 2616 – Sección 10Tipos– Información → 1XX– Éxito → 2XX– Redirección, proxy o caché → 3XX– Error de cliente → 4XX– Error de servidor → 5XX
  22. 22. Tipo de contenido HTTPAcceptContent Type
  23. 23. Validación ETag HTTPEtagif-none-matchif-match
  24. 24. Nivel 3 - Hypermedia
  25. 25. HypermediaEnlazamos recursos.Añadimos información adicional al recursopara indicar cómo se relaciona con otros.Utilizamos formatos propios.
  26. 26. GET /pedido/{id}<pedido> <id>666</id> <estado>Procesado</estado> <links> <link rel=”factura”> http://lechazo.org/api/pedido/666/factura </link> </links></pedido>
  27. 27. GET /pedido/{id}RequestAccept: application/custom+xml, application/xmlResponseContent Type: application/custom+xml
  28. 28. JSON HALJSON Hypertext Application Languagehttp://tools.ietf.org/html/draft-kelly-json-hal-00{ “id”: 666 “_links”: { “factura”: { “href”: “http://lechazo.org/api/pedido/666/factura” } }}
  29. 29. VersionesEn la URI: → /api/v1/recursoComo parámetro http → /api/recurso?v=1.0Como header http → v=1 /api/recurso
  30. 30. SeguridadAutenticación HTTP (:S)Sistema propio basado en tokensOAuth2Gateways: Layer7, apigee enterprise, 3scale...+ HTTPs (no es opcional)
  31. 31. Gracias!@asiermarquesasier@simettric.com

×