El API REST

Roy Fielding acuñó el término REST en su tesis doctoral en el 2000: REST = Representational State Transfer

REST es un estilo arquitectural** y HTTP Rest es una forma de implementarlo.

En los sitios hay recursos que son accedidos utilizando 1) una url que los identifica de manera única 2) el protocolo HTTP.

URI

  • URI = URL + URN. URI: Uniform resource Locator. URN: Uniform Resource Name
  • Cada página, información en una sección, archivo son recursos. Un recurso en la web es la información que se quiere acceder, modificar, borrar.

  • El formato es:

    scheme://host:port/path?queryString#fragment

scheme: HTTP, FTP, HTTPS.
host: por nombre o por direccion IP
port: si es HTTP el puerto debe ser 80
path: texto delimitado por “/”.
queryString es una lista de parámetros name=value cada pareja separada por “&”.
fragment: utilizado para referencias una parte particular en un documento.

HTTP

  • Un protocolo de red sincrónico de request/response usado por aplicaciones en la WEB.
  • Define una sintaxis y la semántica que utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse.
  • Un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores.
  • HTTP define los verbos que indican la acción que desea que se efectúe sobre el recurso identificado. Los más importantes son GET, POST, PUT, DELETE que leen, modifican o borran un recurso.
  • Para representar los recursos existen varios formatos como por ejemplo: XML, JSON
  • HTTP GET retorna un recurso en una representación
  • HTTP PUT envía y crea el recurso en el servidor
  • HTTP POST le envía al servidor representaciones de recursos para cambiarlo.

Principios REST

  • Cada request REST utiliza una URI para localizar lso recursos
  • Hay un interface uniforme. Una URI identifica de manera única un recurso. La URI del recurso no contiene ninguna información sobre la acción que se quiere hacer sobre ese él ni información sobre el formato (por ejemplo .pdf) del recurso. HTTP GET PUT POST DELETE.
  • Orientado a una representación del recurso (XML, JSON)
  • La comunicación es sin estado.

La siguiente es una tabla tomada de wikipedia: The following table shows how the HTTP methods are typically used to implement a RESTful API.

Resources GET
Collection URI, such as http://example.com/resources List the URIs and perhaps other details of the collection's members.
Element URI, such as http://example.com/resources/item17 Retrieve a representation of the addressed member of the collection, expressed in an appropriate Internet media type.
Resources PUT
Collection URI, such as http://example.com/resources Replace the entire collection with another collection.
Element URI, such as http://example.com/resources/item17 Replace the addressed member of the collection, or if it doesn't exist, create it.
Resources POST
Collection URI, such as http://example.com/resources Create a new entry in the collection. The new entry's URI is assigned automatically and is usually returned by the operation.
Element URI, such as http://example.com/resources/item17 Not generally used. Treat the addressed member as a collection in its own right and create a new entry in it.
Resources DELETE
Collection URI, such as http://example.com/resources Delete the entire collection.
Element URI, such as http://example.com/resources/item17 Delete the addressed member of the collection.

Referencias


**Un estilo arquitectural es un conjunto coordinado de restricciones arquitectónicas que restringen los roles / funciones de los elementos arquitectónicos y las relaciones permitidas entre esos elementos dentro de cualquier arquitectura que se ajuste con ese estilo.