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