SlideShare una empresa de Scribd logo
1 de 24
Servicios WEB
Presentación
¿Quién ofrece servicios web?
... y muchos más
Como acceder a servicios web
● REST
● JSON
● SOAP
● TEXTO
● HTML
● ...
Comparación REST/JSON
...
<listado>
<persona>
<nombre>Alberto</nombre>
<apellidos>Garcia</apellidos>
<fecha>21/11/1979</fecha>
</persona>
<persona>
<nombre>David</nombre>
<apellidos>Rodriguez</apellidos>
<fecha>10/01/1983</fecha>
</persona>
</listado>
...
...
var myJSONObject = {"listado": [
{
"nombre": "Alberto",
"apellidos": "Garcia",
"fecha": "21/11/1979"
},
{
"nombre": "David",
"apellidos": "Rodriguez",
"fecha": "10/01/1983"
}
]
};
...
REST JSON
Servicios REST I
● REST (REpresentational State Transfer) es una forma muy sencilla de crear y
usar servicios web.
● Se utiliza la semántica del protocolo HTTP (métodos POST, PUT, GET,
DELETE) para realizar operaciones en el servidor.
● El resultado de cada petición devolverá XML
● Los sistemas que siguen los principios REST se llaman con frecuencia
RESTful
Servicios REST II
REST afirma que la web ha disfrutado de escalabilidad como resultado de una
serie de diseños fundamentales clave:
● Protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda
la información necesaria para comprender la petición. Sin embargo, en la
práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros
mecanismos para mantener el estado de la sesión.
● Conjunto de operaciones bien definidas : HTTP en sí define un conjunto
pequeño de operaciones, las más importantes son POST, GET, PUT y
DELETE.
● Sintaxis universal para identificar los recursos : cada recurso es
direccionable únicamente a través de su URI (cadena de caracteres corta
que identifica inequívocamente un recurso (servicio, página, documento, ...).
Ej: http:, mailto:, ftp:, ...)
● Uso de hipermedios : la representación de este estado HTML o XML.
Como resultado de esto, es posible navegar de un recurso REST a muchos
otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra
infraestructura adicional.
Servicios JSON I
● Acrónimo de JavaScript Object Notation, es un formato ligero para el
intercambio de datos.
● Es un subconjunto de la notación literal de objetos de JavaScript que no
requiere el uso de XML.
● Su simplicidad ha dado lugar a la generalización de su uso, especialmente
como alternativa a XML en AJAX.
● Una de las supuestas ventajas sobre XML como formato de intercambio de
datos en este contexto es que es mucho más sencillo escribir un analizador
semántico de JSON. En JavaScript, un texto JSON se puede analizar
fácilmente usando el procedimiento eval(), lo cual ha sido fundamental para que
JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX,
debido a la ubicuidad de JavaScript en casi cualquier navegador web.
Servicios JSON II
● Si bien es frecuente ver JSON posicionado contra XML, también es frecuente
el uso de JSON y XML en la misma aplicación. Por ejemplo, una aplicación de
cliente que integra datos de Google Maps con datos meteorológicos en SOAP
hacen necesario soportar ambos formatos.
● En diciembre de 2005 Yahoo! comenzó a dar soporte opcional de JSON en
algunos de sus servicios web.
REST: Ejemplo
● Ejemplo accediendo a Flickr.
● Solicitar un API Key :
http://www.flickr.com/services/apps/create/apply/
● Vamos a usar el metodo flickr.photos.getRecent
● Con esta URL se puede probar que funciona bien el API_KEY:
http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key
=<API_KEY>
JSON: Ejemplo
● Ejemplo accediendo a Microsoft API Translator.
● Solicitar un API Key :
http://www.bing.com/developers
● Vamos a usar el método Translate
● Con esta URL se puede probar que funciona bien:
http://api.microsofttranslator.com/V2/Ajax.svc/Translate?text=Hola
%20Mundo&from=es&to=en&appId=<API_KEY>
Google
● Librerías para acceder al API:
http://code.google.com/p/google-api-python-client
http://code.google.com/p/gdata-python-client
● Servicios accesibles:
● Google Custom Search API
● YouTube Data API
● Google Maps Data API
● URL shortener API
● Google Calendar API
● Google Documents List Data API
● Picasa Web Albums Data API
● Blogger Data API
● Google Book Search API
● Google Analytics API
● Google Apps Provisioning API
● Google Base Data API
● Google Code Search Data API
● Google Contacts API
● ...
Google: Consola APIs
● Acceso:
https://code.google.com/apis/console
Google: Instalación gdata-python-client
Descargar de aquí : http://code.google.com/p/gdata-python-
client/downloads/list .
Descomprimir el archivo en algún lugar y por último ejecutar el siguiente
comando:
# sudo ./setup.py install
Google: Instalación google-api-python-client
Descargar de aquí : http://code.google.com/p/google-api-python-
client/downloads/list .
Descomprimir el archivo en algún lugar y por último ejecutar el siguiente
comando:
# sudo ./setup.py install
También es compatible con setuptools y se puede instalar así:
# sudo easy_install google-api-python-client
Google: Búsquedas
● API :
http://code.google.com/intl/es/apis/customsearch/v1/overview.html
● Cuota gratuita limitada a 100 búsquedas por día.
● Si se necesita más se cobrarán $5 por cada 1000 consultas, hasta las
10,000 consultas por día. Si se necesitan más hay que pedir una cuota
adicional.
Google: Youtube
● API:
http://code.google.com/apis/youtube/1.0/developers_guide_python.html
● Buscar, subir, descargar, eliminar videos,...
Google: Maps
● API :
http://code.google.com/apis/maps/documentation/webservices/index.html
● Tiene varios módulos:
● Directions API: Calcula direcciones entre localizaciones
● Distance Matrix API: Calcula tiempo y distancias para una matriz de
origenes y destinos.
● Elevation API : Provee datos de elevación para todas las localizaciones de
la superficie de la tierra. Si es negativa es bajo el mar.
● Geocoding API : Convierte direcciones en coordenadas y viceversa.
● Places API : Devuelve información sobre lugares. Servicios cercanos,
restaurantes, cines, puntos interesantes, ...
Google: URL shortener
● API:
http://code.google.com/apis/urlshortener/v1/reference.html
● Servicio para acortar URL en unos pocos caracteres y que asi sea más fácil
poder usarlas en email, mensajes cortos, sms, ...
● Requiere autentificación Oauth, que sale hecha en el ejemplo. Esto implica
pegar una url en el navegador para darle permiso a la aplicación a acceder a
nuestra cuenta de Google.
Google: Calendar
● API:
http://code.google.com/intl/es/apis/calendar/data/2.0/developers_guide_python.htm
● Permite ver y crear calendarios
● Permite ver y crear eventos, hacer consultas sobre eventos, ....
Google: Docs
● API:
http://code.google.com/apis/documents/docs/3.0/developers_guide_python.html
● Crear documentos, hojas de calculo, ...
● Eliminarlas, subirlas, hacer búsquedas,...
Twitter
● Twitter es una red de información de tiempo real que permite conectarte a lo
que encuentras interesante.
●Simplemente busca cuentas relevantes y sigue las conversaciones.
● La clave de Twitter son pequeños pedazos de información llamados Tweets.
● Cada Tweet tiene 140 caracteres de longitud.
Twitter: Ejemplo
●API :
https://dev.twitter.com/docs/api
● Hay que crear una nueva aplicación:
Se explica después
● Librerías para facilitar el acceso:
http://code.google.com/p/python-twitter
● Instalación librería:
sudo easy_install python-twitter
Twitter: Crear aplicación I
● Para poder usar twitter se debe crear una “aplicación twitter”
● Se accede a esta URL:
https://dev.twitter.com/apps/new
● No hace falta rellenar el Callback URL y hay que darle permisos de “Read and
Write” sino no se pueden hacer posts. Esto nos dará dos datos CONSUMER
KEY y CONSUMER SECRET.
● Lo siguiente es obtener la credenciales Oauth para nuestra aplicación python,
para ello viene un script con python-twitter que habrá que modificar para meter
el COMSUMER KEY y el CONSUMER SECRET:
get_access_token.py
● Nos pedirá que coloquemos una url en el navegador, para darle permiso
con nuestro usuario y después del proceso nos dará un PIN que habrá que
introducir para obtener otros 2 datos “Twitter Access Token Key” y “Access
Token Secret”
● Ahora ves a la aplicación python y haz el login como se explica
Twitter: Crear aplicación II
● Ahora ves a la aplicación python y haz el login como sigue:
api = twitter.Api(CONSUMER_KEY, CONSUMER_SECRET,
TWITTER_ACCESS_TOKEN_KEY,
ACCESS_TOKEN_SECRET)

Más contenido relacionado

La actualidad más candente

Seguridad en SQL Server
Seguridad en SQL ServerSeguridad en SQL Server
Seguridad en SQL ServerRodrigo Corral
 
259730295 unidad-1-contexto-de-la-programacion-cliente-servidor
259730295 unidad-1-contexto-de-la-programacion-cliente-servidor259730295 unidad-1-contexto-de-la-programacion-cliente-servidor
259730295 unidad-1-contexto-de-la-programacion-cliente-servidornoysielm098
 
Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)José Toro
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQLIsabel Gómez
 
Triggers en BD mysql
Triggers en BD mysqlTriggers en BD mysql
Triggers en BD mysqlEmerson Garay
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -IntroducciónOscar Josué Uh Pérez
 
java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )brayan0015
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache SolrChristos Manios
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호KTH, 케이티하이텔
 
My Sql Data Migration
My Sql Data MigrationMy Sql Data Migration
My Sql Data MigrationAnil Yadav
 
Elasticsearch: From development to production in 15 minutes
Elasticsearch: From development to production in 15 minutesElasticsearch: From development to production in 15 minutes
Elasticsearch: From development to production in 15 minutesElasticsearch
 
EJERCICIOS DE SQLl
EJERCICIOS DE SQLlEJERCICIOS DE SQLl
EJERCICIOS DE SQLlAndresSuarez
 
OCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por ModelosOCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por ModelosRicardo Tesoriero
 

La actualidad más candente (20)

Seguridad en SQL Server
Seguridad en SQL ServerSeguridad en SQL Server
Seguridad en SQL Server
 
259730295 unidad-1-contexto-de-la-programacion-cliente-servidor
259730295 unidad-1-contexto-de-la-programacion-cliente-servidor259730295 unidad-1-contexto-de-la-programacion-cliente-servidor
259730295 unidad-1-contexto-de-la-programacion-cliente-servidor
 
tutotial netbeans
tutotial netbeanstutotial netbeans
tutotial netbeans
 
Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)
 
Tipos de manuales
Tipos de manualesTipos de manuales
Tipos de manuales
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQL
 
Triggers en BD mysql
Triggers en BD mysqlTriggers en BD mysql
Triggers en BD mysql
 
Servicios web
Servicios webServicios web
Servicios web
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
 
Validating a json in mule
Validating a json in muleValidating a json in mule
Validating a json in mule
 
ingenieria del software
ingenieria del softwareingenieria del software
ingenieria del software
 
java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
 
Ensayo php
Ensayo phpEnsayo php
Ensayo php
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
 
My Sql Data Migration
My Sql Data MigrationMy Sql Data Migration
My Sql Data Migration
 
Elasticsearch: From development to production in 15 minutes
Elasticsearch: From development to production in 15 minutesElasticsearch: From development to production in 15 minutes
Elasticsearch: From development to production in 15 minutes
 
EJERCICIOS DE SQLl
EJERCICIOS DE SQLlEJERCICIOS DE SQLl
EJERCICIOS DE SQLl
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
OCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por ModelosOCL en Arquitecturas dirigidas por Modelos
OCL en Arquitecturas dirigidas por Modelos
 

Destacado

EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...Alessandro Molina
 
FLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third ImpactFLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third ImpactMichel Alves
 
Manipulating file in Python
Manipulating file in PythonManipulating file in Python
Manipulating file in Pythonshoukatali500
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactMichel Alves
 
Using Git on the Command Line
Using Git on the Command LineUsing Git on the Command Line
Using Git on the Command LineBrian Richards
 
Git hooks For PHP Developers
Git hooks For PHP DevelopersGit hooks For PHP Developers
Git hooks For PHP DevelopersUmut IŞIK
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Peter Kofler
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Anil Sagar
 
FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises Michel Alves
 
FLTK Summer Course - Part VII - Seventh Impact
FLTK Summer Course - Part VII  - Seventh ImpactFLTK Summer Course - Part VII  - Seventh Impact
FLTK Summer Course - Part VII - Seventh ImpactMichel Alves
 
FLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second ImpactFLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second ImpactMichel Alves
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsCarl Brown
 
FLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - ExercisesFLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - ExercisesMichel Alves
 
Creating Custom Drupal Modules
Creating Custom Drupal ModulesCreating Custom Drupal Modules
Creating Custom Drupal Modulestanoshimi
 
"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development processPolished Geek LLC
 
FLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - ExercisesFLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - ExercisesMichel Alves
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsMichel Alves
 
13 Graph Classes
13 Graph Classes13 Graph Classes
13 Graph Classespoffdeluxe
 
Internal Anatomy of an Update
Internal Anatomy of an UpdateInternal Anatomy of an Update
Internal Anatomy of an UpdateMongoDB
 

Destacado (20)

EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
 
FLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third ImpactFLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third Impact
 
Manipulating file in Python
Manipulating file in PythonManipulating file in Python
Manipulating file in Python
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth Impact
 
Using Git on the Command Line
Using Git on the Command LineUsing Git on the Command Line
Using Git on the Command Line
 
Git hooks For PHP Developers
Git hooks For PHP DevelopersGit hooks For PHP Developers
Git hooks For PHP Developers
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
FLTK Summer Course - Part VII - Seventh Impact
FLTK Summer Course - Part VII  - Seventh ImpactFLTK Summer Course - Part VII  - Seventh Impact
FLTK Summer Course - Part VII - Seventh Impact
 
FLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second ImpactFLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second Impact
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 
FLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - ExercisesFLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - Exercises
 
Creating Custom Drupal Modules
Creating Custom Drupal ModulesCreating Custom Drupal Modules
Creating Custom Drupal Modules
 
"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process
 
FLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - ExercisesFLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - Exercises
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
13 Graph Classes
13 Graph Classes13 Graph Classes
13 Graph Classes
 
Internal Anatomy of an Update
Internal Anatomy of an UpdateInternal Anatomy of an Update
Internal Anatomy of an Update
 

Similar a Servicios Web: REST, JSON, APIs Google y Twitter

Appcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAppcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAlberto Ruibal
 
Desarrollo práctico de aplicaciones Linked Data: metodología y herramientas
Desarrollo práctico de aplicaciones Linked Data: metodología y herramientasDesarrollo práctico de aplicaciones Linked Data: metodología y herramientas
Desarrollo práctico de aplicaciones Linked Data: metodología y herramientasGuillermo Álvaro Rey
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM Robles
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Iniciativa Barcelona Open Data
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y PythonCarlos Toxtli
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
Todas las APIs de Google
Todas las APIs de GoogleTodas las APIs de Google
Todas las APIs de GoogleCarlos Toxtli
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHAlejandro Esquiva Rodriguez
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBEmilio Torrens
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apisCloudAppi
 
WEB SCRAPING & API REST
 WEB SCRAPING & API REST WEB SCRAPING & API REST
WEB SCRAPING & API RESTCharly Graf Q
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 

Similar a Servicios Web: REST, JSON, APIs Google y Twitter (20)

Appcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAppcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en Android
 
Desarrollo práctico de aplicaciones Linked Data: metodología y herramientas
Desarrollo práctico de aplicaciones Linked Data: metodología y herramientasDesarrollo práctico de aplicaciones Linked Data: metodología y herramientas
Desarrollo práctico de aplicaciones Linked Data: metodología y herramientas
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
RAML
RAMLRAML
RAML
 
Servicios web
Servicios webServicios web
Servicios web
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y Python
 
La biblia del foot printing
La biblia del foot printingLa biblia del foot printing
La biblia del foot printing
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
Todas las APIs de Google
Todas las APIs de GoogleTodas las APIs de Google
Todas las APIs de Google
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
Curso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App EngineCurso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App Engine
 
Atix30
Atix30Atix30
Atix30
 
Diseño web
Diseño webDiseño web
Diseño web
 
Wilver mongo db
Wilver mongo dbWilver mongo db
Wilver mongo db
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apis
 
WEB SCRAPING & API REST
 WEB SCRAPING & API REST WEB SCRAPING & API REST
WEB SCRAPING & API REST
 
Diseño web
Diseño webDiseño web
Diseño web
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 

Último

PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 

Último (7)

PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 

Servicios Web: REST, JSON, APIs Google y Twitter

  • 2. ¿Quién ofrece servicios web? ... y muchos más
  • 3. Como acceder a servicios web ● REST ● JSON ● SOAP ● TEXTO ● HTML ● ...
  • 5. Servicios REST I ● REST (REpresentational State Transfer) es una forma muy sencilla de crear y usar servicios web. ● Se utiliza la semántica del protocolo HTTP (métodos POST, PUT, GET, DELETE) para realizar operaciones en el servidor. ● El resultado de cada petición devolverá XML ● Los sistemas que siguen los principios REST se llaman con frecuencia RESTful
  • 6. Servicios REST II REST afirma que la web ha disfrutado de escalabilidad como resultado de una serie de diseños fundamentales clave: ● Protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión. ● Conjunto de operaciones bien definidas : HTTP en sí define un conjunto pequeño de operaciones, las más importantes son POST, GET, PUT y DELETE. ● Sintaxis universal para identificar los recursos : cada recurso es direccionable únicamente a través de su URI (cadena de caracteres corta que identifica inequívocamente un recurso (servicio, página, documento, ...). Ej: http:, mailto:, ftp:, ...) ● Uso de hipermedios : la representación de este estado HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.
  • 7. Servicios JSON I ● Acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. ● Es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML. ● Su simplicidad ha dado lugar a la generalización de su uso, especialmente como alternativa a XML en AJAX. ● Una de las supuestas ventajas sobre XML como formato de intercambio de datos en este contexto es que es mucho más sencillo escribir un analizador semántico de JSON. En JavaScript, un texto JSON se puede analizar fácilmente usando el procedimiento eval(), lo cual ha sido fundamental para que JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX, debido a la ubicuidad de JavaScript en casi cualquier navegador web.
  • 8. Servicios JSON II ● Si bien es frecuente ver JSON posicionado contra XML, también es frecuente el uso de JSON y XML en la misma aplicación. Por ejemplo, una aplicación de cliente que integra datos de Google Maps con datos meteorológicos en SOAP hacen necesario soportar ambos formatos. ● En diciembre de 2005 Yahoo! comenzó a dar soporte opcional de JSON en algunos de sus servicios web.
  • 9. REST: Ejemplo ● Ejemplo accediendo a Flickr. ● Solicitar un API Key : http://www.flickr.com/services/apps/create/apply/ ● Vamos a usar el metodo flickr.photos.getRecent ● Con esta URL se puede probar que funciona bien el API_KEY: http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key =<API_KEY>
  • 10. JSON: Ejemplo ● Ejemplo accediendo a Microsoft API Translator. ● Solicitar un API Key : http://www.bing.com/developers ● Vamos a usar el método Translate ● Con esta URL se puede probar que funciona bien: http://api.microsofttranslator.com/V2/Ajax.svc/Translate?text=Hola %20Mundo&from=es&to=en&appId=<API_KEY>
  • 11. Google ● Librerías para acceder al API: http://code.google.com/p/google-api-python-client http://code.google.com/p/gdata-python-client ● Servicios accesibles: ● Google Custom Search API ● YouTube Data API ● Google Maps Data API ● URL shortener API ● Google Calendar API ● Google Documents List Data API ● Picasa Web Albums Data API ● Blogger Data API ● Google Book Search API ● Google Analytics API ● Google Apps Provisioning API ● Google Base Data API ● Google Code Search Data API ● Google Contacts API ● ...
  • 12. Google: Consola APIs ● Acceso: https://code.google.com/apis/console
  • 13. Google: Instalación gdata-python-client Descargar de aquí : http://code.google.com/p/gdata-python- client/downloads/list . Descomprimir el archivo en algún lugar y por último ejecutar el siguiente comando: # sudo ./setup.py install
  • 14. Google: Instalación google-api-python-client Descargar de aquí : http://code.google.com/p/google-api-python- client/downloads/list . Descomprimir el archivo en algún lugar y por último ejecutar el siguiente comando: # sudo ./setup.py install También es compatible con setuptools y se puede instalar así: # sudo easy_install google-api-python-client
  • 15. Google: Búsquedas ● API : http://code.google.com/intl/es/apis/customsearch/v1/overview.html ● Cuota gratuita limitada a 100 búsquedas por día. ● Si se necesita más se cobrarán $5 por cada 1000 consultas, hasta las 10,000 consultas por día. Si se necesitan más hay que pedir una cuota adicional.
  • 17. Google: Maps ● API : http://code.google.com/apis/maps/documentation/webservices/index.html ● Tiene varios módulos: ● Directions API: Calcula direcciones entre localizaciones ● Distance Matrix API: Calcula tiempo y distancias para una matriz de origenes y destinos. ● Elevation API : Provee datos de elevación para todas las localizaciones de la superficie de la tierra. Si es negativa es bajo el mar. ● Geocoding API : Convierte direcciones en coordenadas y viceversa. ● Places API : Devuelve información sobre lugares. Servicios cercanos, restaurantes, cines, puntos interesantes, ...
  • 18. Google: URL shortener ● API: http://code.google.com/apis/urlshortener/v1/reference.html ● Servicio para acortar URL en unos pocos caracteres y que asi sea más fácil poder usarlas en email, mensajes cortos, sms, ... ● Requiere autentificación Oauth, que sale hecha en el ejemplo. Esto implica pegar una url en el navegador para darle permiso a la aplicación a acceder a nuestra cuenta de Google.
  • 19. Google: Calendar ● API: http://code.google.com/intl/es/apis/calendar/data/2.0/developers_guide_python.htm ● Permite ver y crear calendarios ● Permite ver y crear eventos, hacer consultas sobre eventos, ....
  • 20. Google: Docs ● API: http://code.google.com/apis/documents/docs/3.0/developers_guide_python.html ● Crear documentos, hojas de calculo, ... ● Eliminarlas, subirlas, hacer búsquedas,...
  • 21. Twitter ● Twitter es una red de información de tiempo real que permite conectarte a lo que encuentras interesante. ●Simplemente busca cuentas relevantes y sigue las conversaciones. ● La clave de Twitter son pequeños pedazos de información llamados Tweets. ● Cada Tweet tiene 140 caracteres de longitud.
  • 22. Twitter: Ejemplo ●API : https://dev.twitter.com/docs/api ● Hay que crear una nueva aplicación: Se explica después ● Librerías para facilitar el acceso: http://code.google.com/p/python-twitter ● Instalación librería: sudo easy_install python-twitter
  • 23. Twitter: Crear aplicación I ● Para poder usar twitter se debe crear una “aplicación twitter” ● Se accede a esta URL: https://dev.twitter.com/apps/new ● No hace falta rellenar el Callback URL y hay que darle permisos de “Read and Write” sino no se pueden hacer posts. Esto nos dará dos datos CONSUMER KEY y CONSUMER SECRET. ● Lo siguiente es obtener la credenciales Oauth para nuestra aplicación python, para ello viene un script con python-twitter que habrá que modificar para meter el COMSUMER KEY y el CONSUMER SECRET: get_access_token.py ● Nos pedirá que coloquemos una url en el navegador, para darle permiso con nuestro usuario y después del proceso nos dará un PIN que habrá que introducir para obtener otros 2 datos “Twitter Access Token Key” y “Access Token Secret” ● Ahora ves a la aplicación python y haz el login como se explica
  • 24. Twitter: Crear aplicación II ● Ahora ves a la aplicación python y haz el login como sigue: api = twitter.Api(CONSUMER_KEY, CONSUMER_SECRET, TWITTER_ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)