APIs sobre HTTP

Veurem dos tipus de protocols sobre HTTP: un stateless i un altre stateful.

RESTful API

REST (Representional State Transfer) és un estil d'arquitectura per a sistemes distribuïts. Permet establir comunicació d'aplicacions amb serveis proporcionats a la web. Per tal que una interfície es pugui anomenar RESTful, ha de cumplir una sèrie de principis:

  1. Ha d'implementar un esquema client/servidor. Això permet desenvolupar-los de forma independent, i reemplaçar-los.
  2. Ha de ser stateless (sense estat en el servidor). Per tant, l'estat s'ha de conservar al client. Això millora l'escalabilitat, la disponibilitat i el rendiment de l'aplicació.
  3. S'ha de donar informació al client (de forma implícita o explícita) de si el contingut és cacheable. Així, es pot millorar l'escalabilitat i rendiment.
  4. Ha de tenir una interfície uniforme. Bàsicament, un recurs ha de associar-se amb una URI que permeti accedir a les seves dades.
  5. Ha de dissenyar-se com a un sistema per capes. El client no pot saber específicament l'arquitectura del servei o on es troben les dades, per exemple.
  6. Opcionalment, el client pot demanar codi al servidor, per simplificar la seva implementació (poc habitual).

Encara que no és obligatori, un servei RESTful sovint utilitza HTTP com a protocol. En aquest cas, els cos de les peticions i les respostes solen tenir el format XML o bé JSON.

Si ens fixem en les operacions CRUD habituals, hi ha una convenció de com utilitzar els mètodes HTTP utilitzant els codis d'estat 200, 201, 204, 400, 404:

  • GET: llegir (idempotent).
  • POST: crear (no cacheable).
  • PUT: actualitzar/reemplaçar.
  • DELETE: esborrar.
  • PATCH: modificació parcial.

Com que el protocol és sense estat (stateless), la autenticació/autorització ha de produir-se per cada petició. Les pràctiques recomanades inclouen utilitzar canals segurs, i no exposar mai dades a la URL. També es recomana l'ús d'Oauth.

L'ús de tokens, o paraules d'accés, és habitual als sistemes d'autenticació. El funcionament amb token és el següent:

  • L'usuari o aplicació client accedeix al servei d'autenticació.
  • Si és correcta, el servidor genera un token que envia al client.
  • L'usuari accedeix als recursos amb el seu token.

Streaming API

Un protocol de tipus streaming és justament una inversió del RESTful. No es tracta d'una conversació. Es tracta d'obrir una connexió entre un client i l'API, on el client va rebent els nou resultats quan es produeixen, en temps real.

La seva naturalesa és stateful, ja que l'API envia els resultats en funció del perfil del client i/o de les regles de filtratge que hagi establert.

És habitual utilitzar el format JSON. En aquest cas, s'utilitza el format text i es poden delimitar els missatges amb fi de línia.

Un exemple és el de Twitter.