simplemente rest
Post on 27-Jun-2015
272 Views
Preview:
DESCRIPTION
TRANSCRIPT
Simplemente
RESTGabriel Fagúndez de los Reyes
2.500.000.000usuarios
60.000.000.000.000.000.000páginas
9.000.000Facebook apps
¿Habrán imaginado este crecimiento al momento de "inventar" la web?
NO
La evolución de Internet,reveló una necesidad...
Protocolo de comunicación entre clientes y servicios web
CORBA
XML-RPC
SOAP
RESTRepresentational State Transfer
¿Qué es REST?
¿Qué necesidad cubre?
APIInterfaz de programación de aplicaciones
JSONJavaScript Object Notation
Demo_
Aplicando REST en 4 pasos
Elementos de información
Elementos de información
users
Acceso a los elementos de información
Acceso a los elementos de información
/users/:id
Códigos de estado HTTP
[200 OK]
Códigos de estado HTTP
Comunicación sin estado
Comunicación sin estado
/users/gabrielfagundez/repos
Tips :)
GET https://api.github.com?type=users&id=captainkidd
GET https://api.github.com?type=users&id=captainkidd
Usa recursos para acceder a los objetos
GET https://api.github.com?type=users&id=captainkidd
GET https://api.github.com/users/captainkidd
GET https://api.github.com/users/captainkidd/edit
GET https://api.github.com/users/captainkidd/edit
URIs únicas, sin acciones
GET https://api.github.com/users/captainkidd/edit
PUT https://api.github.com/users/captainkidd
GET https://api.github.com/users/captainkidd/repos.pdf
GET https://api.github.com/users/captainkidd/repos.pdf
URIs independientes del formato
GET https://api.github.com/users/captainkidd/repos.pdf
GET https://api.github.com/users/captainkidd/repos
Accept: application/pdf
GET https://api.github.com/gists/page/22/per_page/2
GET https://api.github.com/gists/page/22/per_page/2
Operaciones y filtrado con parámetros
GET https://api.github.com/gists/page/22/per_page/2
GET https://api.github.com/gists?page=22&per_page=2
GET https://api.github.com/users/captainkidd/repos
GET https://api.github.com/users/captainkidd/repos
Estructura lógica
No reinventes la rueda, usa HTTP
GET“¿Me das este recurso?”
POST“Tomá, poné esta información en su lugar”
PUT“Tomá información actualizada, sustituí el anterior objeto”
PATCH“Cambiá parte de la información por ésta que te envío”
DELETE“Borralo”
HEAD“Solo dame los cabezales,
quiero saber si mi información está ahí”
Y ante cada consulta, una respuesta
Success
Success
200OK
201Created
Success
200OK
201Created
202Accepted
Success
200OK
204No Content
Success201
Created
202Accepted
200OK
206Partial Content
Success
204No Content
201Created
202Accepted
200OK
Redirection
301Moved Permanently
Redirection
304Not Modified
Redirection
301Moved Permanently
307Temporary Redirect
Redirection
304Not Modified
301Moved Permanently
Client Error
400Bad Request
Client Error
401Unauthorized
Client Error
400Bad Request
402Payment Required
Client Error
401Unauthorized
400Bad Request
404Not Found
Client Error
402Payment Required 401
Unauthorized
400Bad Request
408Request Timeout
Client Error
404Not Found
402Payment Required 401
Unauthorized
400Bad Request
412Precondition Failed
Client Error
408Request Timeout
404Not Found
402Payment Required 401
Unauthorized
400Bad Request
Server Error
500Internal Server Error
Server Error
501Not Implemented
Server Error
500Internal Server Error
503Service Unavailable
Server Error
501Not Implemented
500Internal Server Error
Simple.
Beyond REST...
Headers
Caché
Manejo de errores
Seguridad
HeadersMetadata
Accept: text/plain
CachéPerformance
Proxy - HTTP
Manejo de ErroresErrores para humanos
HTTP/1.1 415 Unsupported Media Type
{
"message": "<...> Must accept 'application/json'.", "documentation_url": "http://developer.github.com/v3"
}
SeguridadAcceso controlado
Basic AuthenticationNombre de usuario y contraseña
curl -X GET https://api.github.com/users/gabrielfagundez -i -H
'Authorization: Basic QNfosnd$eF30fmFppPw12ddD1s=='
OAuth V2
OAuth V2
APP
"La simplicidad es la mayor sofisticación"
Leonardo da Vinci
¿Preguntas?
@gabrielfagundez
top related