APIs

En la web

¿Qué es una APi?

  • Interfaz de programación de aplicaciones
  • Representa la capacidad de comunicación entre componentes de software
  •  Y permiten la expansión de nuestros propios sistemas

En otras palabras

Una API es al programador lo que la GUI al usuario.

 

Es vital, al momento de abstraer partes de un software.

¿Por qué necesito una API?

  • Fomenta el paradigma SOA
  • Añade una capa de seguridad a nuestros datos y sistemas
  • Permite la escalabilidad de nuestros sistemas
  • Añade capas de abstracción, etc.

APIs en la web

Son publicadas por los constructores de software para permitir acceso a características de bajo nivel o propietarias.

Son utilizadas por los programadores para construir sus aplicaciones sin necesidad de volver a programar funciones ya hechas por otros, reutilizando código que se sabe que está probado y que funciona correctamente.

 

¿Qué necesita una API?

  • Un formato de salida
  • Un sistema de autenticación/autorización
  • Un conjunto de recursos
  • Una conexión a una base de datos (NoSQL a veces)

XML

HTML
YAML...y otros lenguajes de marcado

JSON, CSON y otros formatos

  • Menos es mas
  • Es muy fácil definir objetos
  • Ocupa poco espacio
[
    {
       "Nombre":"Estuardo",
       "Apellido":"Díaz",
       "NombreCompleto":"Estuardo Díaz",
       "Username":"t4r0_o",
       "FechaDeAlta":"10-10-2012",
       "Seguidores":5,
       "Siguiendo":8
    },

    {    
       "Nombre":"Juan",
       "Apellido":"Perez",
       "NombreCompleto":"Juan Perez",
       "Username":"Mr.John",
       "FechaDeAlta":"8-11-2012",
       "Seguidores":1,
       "Siguiendo":45
    }
]
<?xml version="1.0"?>
<root>
 <Usuarios>
     <Usuario>
      <Nombre>Estuardo</Nombre>
      <Apellido>Díaz</Apellido>
      <NombreCompleto>Estuardo Díaz</NombreCompleto>
      <Username>t4r0_o</Username>
      <FechaDeAlta>10-10-2012</FechaDeAlta>
      <Seguidores>5</Seguidores>
      <Siguiendo>8</Siguiendo>
     </Usuario>
     <Usuario>
      <Nombre>Juan</Nombre>
      <Apellido>Perez</Apellido>
      <NombreCompleto>Juan Perez</NombreCompleto>
      <Username>Mr.Jhon</Username>
      <FechaDeAlta>8-11-2012</FechaDeAlta>
      <Seguidores>1</Seguidores>
      <Siguiendo>45</Siguiendo>
     </Usuario>
</Usuarios>
</root>

OAuth

Es un protocolo abierto, propuesto por Blaine Cook y Chris Messina, que permite autorización segura de una API de modo estándar y simple para aplicaciones de escritorio, móviles y web.

Un servicio y el RESTo es historia

REST

Es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web.

Se basa en mensajes http

¿Qué necesita REST?

  • Un conjunto de recursos de salida
  • Un conjunto de URIs
  • Un conjunto de métodos bien definidos

Recursos y URIs

class Persona:
    id=0
    nombre=""
    apellido=""
    username=""
{
  "id":1
  "nombre":"juan",
  "apellido":"perez",
  "username":Mr.Jhon"
}

URL = https://api.misitio.com

URI = /personas

URI individual = /personas/{id}

Recursos y URIs

Métodos

GET /personas

POST /personas

GET /personas/1

PUT /personas/1

DELETE personas/1

Recursos y URIs

Adicionales

GET /personas/?search=juan

GET /personas/1/followers

GET /personas/1/posts?offset=12&limit=20

¿Qué necesito para hacer una API?

  1. Una base de datos, y preferiblemente un ORM
  2. Un Framework de desarrollo RESTful
  3. Un proveedor de servicios de autenticación
  4. Un servidor http/https

Django + Tastypie

  • Django es un framework de desarrollo web
  • Tastypie es un framework de APIs RESTful, basado en los modelos de django
  • Es muy extensible

APIs

By Estuardo Díaz

APIs

Una presentación general sobre la importancia de las APIs en la web

  • 2,636