Simplemente REST

86
Simplemente REST Gabriel Fagúndez de los Reyes

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 of Simplemente REST

Page 1: Simplemente REST

Simplemente

RESTGabriel Fagúndez de los Reyes

Page 2: Simplemente REST
Page 3: Simplemente REST

2.500.000.000usuarios

Page 4: Simplemente REST

60.000.000.000.000.000.000páginas

Page 5: Simplemente REST

9.000.000Facebook apps

Page 6: Simplemente REST

¿Habrán imaginado este crecimiento al momento de "inventar" la web?

Page 7: Simplemente REST

NO

Page 8: Simplemente REST

La evolución de Internet,reveló una necesidad...

Page 9: Simplemente REST

Protocolo de comunicación entre clientes y servicios web

Page 10: Simplemente REST

CORBA

XML-RPC

SOAP

Page 11: Simplemente REST

RESTRepresentational State Transfer

Page 12: Simplemente REST

¿Qué es REST?

Page 13: Simplemente REST

¿Qué necesidad cubre?

Page 14: Simplemente REST

APIInterfaz de programación de aplicaciones

Page 15: Simplemente REST

JSONJavaScript Object Notation

Page 16: Simplemente REST

Demo_

Page 17: Simplemente REST

Aplicando REST en 4 pasos

Page 18: Simplemente REST

Elementos de información

Page 19: Simplemente REST

Elementos de información

users

Page 20: Simplemente REST

Acceso a los elementos de información

Page 21: Simplemente REST

Acceso a los elementos de información

/users/:id

Page 22: Simplemente REST

Códigos de estado HTTP

Page 23: Simplemente REST

[200 OK]

Códigos de estado HTTP

Page 24: Simplemente REST

Comunicación sin estado

Page 25: Simplemente REST

Comunicación sin estado

/users/gabrielfagundez/repos

Page 26: Simplemente REST

Tips :)

Page 28: Simplemente REST

GET https://api.github.com?type=users&id=captainkidd

Usa recursos para acceder a los objetos

Page 29: Simplemente REST

GET https://api.github.com?type=users&id=captainkidd

GET https://api.github.com/users/captainkidd

Page 31: Simplemente REST

GET https://api.github.com/users/captainkidd/edit

URIs únicas, sin acciones

Page 32: Simplemente REST

GET https://api.github.com/users/captainkidd/edit

PUT https://api.github.com/users/captainkidd

Page 33: Simplemente REST

GET https://api.github.com/users/captainkidd/repos.pdf

Page 34: Simplemente REST

GET https://api.github.com/users/captainkidd/repos.pdf

URIs independientes del formato

Page 35: Simplemente REST

GET https://api.github.com/users/captainkidd/repos.pdf

GET https://api.github.com/users/captainkidd/repos

Accept: application/pdf

Page 36: Simplemente REST

GET https://api.github.com/gists/page/22/per_page/2

Page 37: Simplemente REST

GET https://api.github.com/gists/page/22/per_page/2

Operaciones y filtrado con parámetros

Page 38: Simplemente REST

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

GET https://api.github.com/users/captainkidd/repos

Page 40: Simplemente REST

GET https://api.github.com/users/captainkidd/repos

Estructura lógica

Page 41: Simplemente REST

No reinventes la rueda, usa HTTP

Page 42: Simplemente REST

GET“¿Me das este recurso?”

Page 43: Simplemente REST

POST“Tomá, poné esta información en su lugar”

Page 44: Simplemente REST

PUT“Tomá información actualizada, sustituí el anterior objeto”

Page 45: Simplemente REST

PATCH“Cambiá parte de la información por ésta que te envío”

Page 46: Simplemente REST

DELETE“Borralo”

Page 47: Simplemente REST

HEAD“Solo dame los cabezales,

quiero saber si mi información está ahí”

Page 48: Simplemente REST

Y ante cada consulta, una respuesta

Page 49: Simplemente REST

Success

Page 50: Simplemente REST

Success

200OK

Page 51: Simplemente REST

201Created

Success

200OK

Page 52: Simplemente REST

201Created

202Accepted

Success

200OK

Page 53: Simplemente REST

204No Content

Success201

Created

202Accepted

200OK

Page 54: Simplemente REST

206Partial Content

Success

204No Content

201Created

202Accepted

200OK

Page 55: Simplemente REST

Redirection

Page 56: Simplemente REST

301Moved Permanently

Redirection

Page 57: Simplemente REST

304Not Modified

Redirection

301Moved Permanently

Page 58: Simplemente REST

307Temporary Redirect

Redirection

304Not Modified

301Moved Permanently

Page 59: Simplemente REST

Client Error

Page 60: Simplemente REST

400Bad Request

Client Error

Page 61: Simplemente REST

401Unauthorized

Client Error

400Bad Request

Page 62: Simplemente REST

402Payment Required

Client Error

401Unauthorized

400Bad Request

Page 63: Simplemente REST

404Not Found

Client Error

402Payment Required 401

Unauthorized

400Bad Request

Page 64: Simplemente REST

408Request Timeout

Client Error

404Not Found

402Payment Required 401

Unauthorized

400Bad Request

Page 65: Simplemente REST

412Precondition Failed

Client Error

408Request Timeout

404Not Found

402Payment Required 401

Unauthorized

400Bad Request

Page 66: Simplemente REST

Server Error

Page 67: Simplemente REST

500Internal Server Error

Server Error

Page 68: Simplemente REST

501Not Implemented

Server Error

500Internal Server Error

Page 69: Simplemente REST

503Service Unavailable

Server Error

501Not Implemented

500Internal Server Error

Page 70: Simplemente REST

Simple.

Page 71: Simplemente REST

Beyond REST...

Page 72: Simplemente REST

Headers

Caché

Manejo de errores

Seguridad

Page 73: Simplemente REST

HeadersMetadata

Page 74: Simplemente REST

Accept: text/plain

Page 75: Simplemente REST

CachéPerformance

Page 76: Simplemente REST

Proxy - HTTP

Page 77: Simplemente REST

Manejo de ErroresErrores para humanos

Page 78: Simplemente REST

HTTP/1.1 415 Unsupported Media Type

{

"message": "<...> Must accept 'application/json'.", "documentation_url": "http://developer.github.com/v3"

}

Page 79: Simplemente REST

SeguridadAcceso controlado

Page 80: Simplemente REST

Basic AuthenticationNombre de usuario y contraseña

Page 81: Simplemente REST

curl -X GET https://api.github.com/users/gabrielfagundez -i -H

'Authorization: Basic QNfosnd$eF30fmFppPw12ddD1s=='

Page 82: Simplemente REST

OAuth V2

Page 83: Simplemente REST

OAuth V2

Page 84: Simplemente REST

APP

Page 85: Simplemente REST

"La simplicidad es la mayor sofisticación"

Leonardo da Vinci

Page 86: Simplemente REST

¿Preguntas?

@gabrielfagundez