SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
www.sgcampus.com.mx @sgcampus
www.sgcampus.com.mx
@sgcampus
Jose Luis Fonseca
Conectando software por medio de APIs
www.sgcampus.com.mx @sgcampus
Jose Luis Fonseca
Twitter: @joselfonseca
Github: joselfonseca
http://josefonseca.me
http://hechoenlaravel.com
https://laraveles.com/author/joselfonseca/
www.sgcampus.com.mx @sgcampus
Que es un API?
•Según Wikipedia
–Una API representa la capacidad de
comunicación entre componentes de software.
www.sgcampus.com.mx @sgcampus
Que es un API?
•Según Wikipedia
–Una API representa la capacidad de
comunicación entre componentes de software.
•En el contexto de nuestra charla
–Medio de comunicación entre diferentes
aplicaciones que comparten un mismo dominio
o uno relacionado.
www.sgcampus.com.mx @sgcampus
Que es un API?
Base de datos
Almacenamiento
de archivos
ERP
REST / JSON API
Por HTTPS
Aplicación A
(iOS)
Aplicación B
(Android)
Aplicación C
(Slack bot)
Private Cloud Public Cloud Public
www.sgcampus.com.mx @sgcampus
Datos de prueba
( Database Seeding )
www.sgcampus.com.mx @sgcampus
Datos de prueba
( Database Seeding )
• No usar bases de datos REALES!!!!
• Usar un generador de dummy data (Tipo Faker
en PHP)
• Usar migraciones y/o una DB SQLite (Para
pruebas de integración / unitarias).
www.sgcampus.com.mx @sgcampus
Teoría I/O
www.sgcampus.com.mx @sgcampus
Teoría I/O
• Peticiones - (Requests)
• Respuestas - (Responses)
• Formatos
• Estructura del contenido.
www.sgcampus.com.mx @sgcampus
Teoría I/O
Peticiones (Requests)
Verbos HTTP (Mas usados)
• GET
• POST
• PUT
• PATCH
• DELETE
www.sgcampus.com.mx @sgcampus
Teoría I/O
Peticiones (Requests)
GET
https://empleolaravel.com/api/developers
www.sgcampus.com.mx @sgcampus
Teoría I/O
Peticiones (Requests)
POST
https://empleolaravel.com/api/companies
www.sgcampus.com.mx @sgcampus
Teoría I/O
Respuestas (Responses)
Partes de la respuesta que debemos tener en cuenta
• Status Code (Código de estado)
• Headers
• Body
www.sgcampus.com.mx @sgcampus
Teoría I/O
Respuestas (Responses)
GET
https://empleolaravel.com/api/developers
www.sgcampus.com.mx @sgcampus
Teoría I/O
Formatos
En que formato queremos recibir / enviar la
información?
www.sgcampus.com.mx @sgcampus
Teoría I/O
Formatos
x-www-form-urlencoded
Formularios en HTML
www.sgcampus.com.mx @sgcampus
Teoría I/O
Formatos
JSON
Cool People
www.sgcampus.com.mx @sgcampus
Teoría I/O
Formatos
Want some JSON????
www.sgcampus.com.mx @sgcampus
Teoría I/O
Formatos
Want some JSON????
www.sgcampus.com.mx @sgcampus
Teoría I/O
Estructura del contenido
Exponer la DB
= BAD THING!
www.sgcampus.com.mx @sgcampus
Teoría I/O
Estructura del contenido
Se ve mejor
No es re-usable
www.sgcampus.com.mx @sgcampus
Teoría I/O
Estructura del contenido
www.sgcampus.com.mx @sgcampus
Teoría I/O
Estructura del contenido
JSON API
http://jsonapi.org
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
• Códigos de estado
• Mensajes de error
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
2XX - Todo está bien
3XX – Redirecciones
4XX - El cliente lo hizo mal
5XX - El API / servidor hizo algo mal
Códigos de estado HTTP
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
200 OK con errores en el body
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
200 OK con errores en el body
= BAD THING!
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
200 OK con errores en el body
= BAD THING!
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
Códigos de estado y mensajes de Error
422 El cliente fallo!
www.sgcampus.com.mx @sgcampus
Códigos de estado y manejo de errores
200 - Todo OK
201 - Se ha creado el recurso
202 - Aceptado, se está procesando
301 - Redirección
400 - Petición mal hecha
401 - No autorizado (No esta logueado)
403 - No tienes permiso para esto (Si está
logueado)
404 - What?
405 - El verbo no está soportado
422 - No podemos procesar la entidad
429 - Muchas peticiones
500 - Error del API o server
503 - Vuelve pronto!
www.sgcampus.com.mx @sgcampus
Autenticación
www.sgcampus.com.mx @sgcampus
Autenticación
• Basic
• JWT
• oAuth 2
www.sgcampus.com.mx @sgcampus
Autenticación
https://oauth.net/2/
https://tools.ietf.org/html/rfc6749
www.sgcampus.com.mx @sgcampus
Autenticación
https://alexbilbie.com/guide-to-oauth-2-grants/
www.sgcampus.com.mx @sgcampus
Autenticación
• Usar un método de autenticación que sea acorde
a la necesidad.
• No dejar de usar autenticación.
• No inventar métodos de autenticación
• Siempre usar SSL
www.sgcampus.com.mx @sgcampus
Documentación
www.sgcampus.com.mx @sgcampus
Documentación
• Los clientes necesitan documentación
• Documentar los endpoints con sus posibles
respuestas
• Adoptar una herramienta
• Swagger
• Api Blueprint
• RAML
http://swagger.io/
https://apiblueprint.org/
http://raml.org/
www.sgcampus.com.mx @sgcampus
Otros Recursos
www.sgcampus.com.mx @sgcampus
Otros Recursos
Para buscar / leer / aprender
• HATEOAS
• Versionamiento del API / Recursos
• Testing
• Continuos Integration
• Pagination
www.sgcampus.com.mx @sgcampus
Otros Recursos
Recomendación
https://apisyouwonthate.com/
www.sgcampus.com.mx @sgcampus
Gracias!

Más contenido relacionado

Similar a Conectando Software por medio de APIs

Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014
fsolari
 
03 darío simonassi - api - vision general 2014
03 darío simonassi - api - vision general 201403 darío simonassi - api - vision general 2014
03 darío simonassi - api - vision general 2014
fsolari
 

Similar a Conectando Software por medio de APIs (20)

1.arquitectura web
1.arquitectura web1.arquitectura web
1.arquitectura web
 
Rest
RestRest
Rest
 
Arquitectura API Rest.
Arquitectura API Rest.Arquitectura API Rest.
Arquitectura API Rest.
 
La transformacion digital en nuestra vida cotidiana. Un vistazo a las APIs
La transformacion digital en nuestra vida cotidiana. Un vistazo a las APIsLa transformacion digital en nuestra vida cotidiana. Un vistazo a las APIs
La transformacion digital en nuestra vida cotidiana. Un vistazo a las APIs
 
Los 12 mejores trucos para acelerar WordPress
Los 12 mejores trucos para acelerar WordPressLos 12 mejores trucos para acelerar WordPress
Los 12 mejores trucos para acelerar WordPress
 
Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPI
 
Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
01 webinar caso_migracion_portalweb_v1.4.1-intix
01 webinar caso_migracion_portalweb_v1.4.1-intix01 webinar caso_migracion_portalweb_v1.4.1-intix
01 webinar caso_migracion_portalweb_v1.4.1-intix
 
Proyecto PAGINA FUTBOL
Proyecto PAGINA FUTBOLProyecto PAGINA FUTBOL
Proyecto PAGINA FUTBOL
 
Bitso: El viaje para convertir una arquitectura monolítica en un monolito dis...
Bitso: El viaje para convertir una arquitectura monolítica en un monolito dis...Bitso: El viaje para convertir una arquitectura monolítica en un monolito dis...
Bitso: El viaje para convertir una arquitectura monolítica en un monolito dis...
 
Soalatam apim v1.0
Soalatam apim v1.0Soalatam apim v1.0
Soalatam apim v1.0
 
App engine
App engineApp engine
App engine
 
03 darío simonassi - api - vision general 2014
03 darío simonassi - api - vision general 201403 darío simonassi - api - vision general 2014
03 darío simonassi - api - vision general 2014
 
Webinar insigth integraciones abril 2017
Webinar insigth integraciones abril 2017Webinar insigth integraciones abril 2017
Webinar insigth integraciones abril 2017
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 

Más de Software Guru

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (11)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

Conectando Software por medio de APIs