Teoría de Web Services

De MediaWiki
Ir a la navegación Ir a la búsqueda


Conceptos xeráis e servizos web REST

Os servizos web

Un servizo web pode ser:

  • un servizo ofrecido por un dispositivo electrónico a outro dispositivo, comunicándose xeralmente via Internet
  • un servizo executado xeralmente nun servidor, escoitando peticións de clientes nun porto sobre a rede, para servirlle documentos web (HTML, JSON, XML, imaxes, etc.)

Neste artigo ímos trataballar sobre os servizos web na súa primeira acepción. A segunda pódese ver neste outro artigo.

Profundizando, podemos dicir:

Os Servizos Web (Web Services) son unha serie de tecnoloxías, estándares e protocolos que permiten a comunicación e cooperación entre sistemas informáticos, independentemente das súas plataformas ou a linguaxe de programación na que estes sexan escrito.

API

Qué e unha API?

A interface de programación de aplicación (Application Programming Interface) é un mecanismo que permite a comunicación e intercambio de información entre sistemas.

A interface proporciona unha transparencia en canto á implementación interna desas funcionalidades nese módulo de software: a implementación pode trocar e soamente se ve afectada a implementación nese módulo (da que prové tal API), sen se veren afectados os módulos que usan a tal API.

No contexto dos Datos Abertos, refírese a APIs sobre a Web (API Web), que é un medio habitual para soportar o intercambio de información dentro e entre organizacións.

Esta característica implica que unha API ofrece un conxunto de funcionalidades sobre un servidor na Web para ser utilizadas por aplicacións cliente mediante o uso de procedementos estándar.

Para qué serve?

Úsanse para interactuar co sistema de información dunha organización sen necesidade dun coñecemento da estrutura interna ou da tecnoloxía utilizada no seu desenvolvmento.

As APIs ofrecen unha opción flexible de acceso os datos respecto á descarga de ficheiros; mais ambas opcións son compatibles e unha opción non exclúe á outra.

Unha ventaxa das APIs frente á descarga de ficheiros é que permite aplicar diferentes operacións durante o acceso e recuperación dos datos. O filtrado de datos ou a selección do formato de saída son operacións habituais no consumo de datos vía API.

Qué se precisa para usar una API?

Necesidade de ter a API documentada

Precísase coñecer os mecanismos de uso da API; os usuarios disporán dunha documentación que describe os detalles técnicos involucrados no seu uso e entre outros, a forma de acceso a as operacións necesarias para interactuar coa API.

A documentación dunha API é un dos seus elementos máis importantes e constitúe un contrato entre as partes, que describe o comportamento e as condicións de uso da API.

Especificando:

  • cómo acceder e autenticarse (de ser preciso)
  • qué operacións están disponibles
  • qué se vai obter coma resposta ó invocalas
  • exemplos de uso

Cómo se implementa una API?

SOAP Web Service

Impleméntanse seguindo algún modelo arquitectónico ou guía de deseño que permite definir as reglas que gobernan a interacción entre sistemas.

Catro arquitecturas para implementar Web Services
Modelo REST

Existen diferentes modelos de implementación, dous sendo os máis destacados:

Servivo web SOAP vs REST
SOAP REST
Simple Object Access Protocol REpresentational State Transfer
É un protocotolo É un deseño arquitectónico
Non pode usar REST porque é un protocolo Pode usar servizos web SOAP porque pode usar procolos como HTTP, SOAP, ...
Usa servizos de interfaz para expoñer a súa lógxica de negocio Usa URI para expoñer a súa lóxica de negocio
JAX-WS é a API de Java para os servizos web SOAP web services JAX-RS é a API de Java para RESTful web services
Define os estándares que deben ser seguidos de xeito estricto Non define estándares
Require máis ancho de banda e recursos que REST Require menos ancho de banda e recursos que SOAP
Define a súa propia seguridade Herda as medidas de seguridade do protoclo de transporte usado
Permite só a transferencia de datos en formato XML Permite diferentes formatos de data: texto plano, HTML, XML, JSON, ...
Menos usado que REST Máis usado que SOAP

API REST

Continuaremos co deseño arquitectónico REST(Representational State Transfer). As APIs que seguen este modelo de implementación chamanse RESTful APIs.

Unha característica relevante deste modelo é o uso de estándares abertos coma HTTP/HTTPS, o cal non vincula as implementacións da API no servidor o das aplicacións cliente con ninguna implementación concreta; isto é, ambos compoñentes podense implementar usando linguaxes de programación diferentes, sempre que poidan formular solicitudes e entender respostas usando o protocolo HTTP.

Unha API REST pódese implementar utilizando calquier linguaje de programación. Os máis habituales:

  • Java
  • .NET
  • Python
  • PHP
  • Ruby
  • Node.js.

As API REST deseñanse para exponer e interactuar con recursos que son obxectos, datos ou serviczos aos que pode acceder un cliente. Conceptualmente, un recurso non debe asociarse cunha estrutura física de datos, dado que podería derivar de consultas internas a varias táboas dunha base de datos relacional e presentarse ó cliente como unha única entidade.

API REST é por tanto unha interfaz entre servidores e clientes para intercambiar representacións de datos na Web en diferentes formatos (sobre todo JSON e XML).

O uso do protocolo HTTP como método de acceso e de URIs para identificar unívocamente recursos de datos de forma individual, aportan unha separación fundamental entre peticións e respostas de datos, logrando implementacións de servicios e aplicacións máis eficientes.

Unha ventaxa inherente ó uso de estándares dea Web para o deseño de APIs é a posibilidade de utilizar enlaces a recursos adicionais coma complemento á saída de datos coma, por exemplo, un enlace a un diccionario de datos ou calquier tipo de documento hipermedia relacionado coa saída da API.

Exemplo de petición de información a unha API sobre rutas de bus nunha cidade:

GET https://data.mycity.example.com/transport/api/v2/routes

Exemplo de resposta á petición anterior que utiliza códigos de resposta estándar HTTP e devolve ademáis de datos concretos sobre a ruta, enlaces a outros recursos vinculados:

{
"code": "200",
"text": "OK",
"data": {
"update_time": "2013-01-01T03:00:02Z",
"route_id": "52",
"route_name": "Lexington South",
"route_description": "Lexington corridor south of Market",
"route_type": "3"
},
"links": [{
"href": "https://data.mycity.example.com/transport/api/v2/routes/52",
"rel": "self",
"type": "application/json",
"method": "GET"
}, {
"href": "https://data.mycity.example.com/transport/api/v2/routes",
"rel": "collection",
"type": "application/json",
"method": "GET"
}, {
"href": "https://data.mycity.example.com/transport/api/v2/schedules/52",
"rel": "describedby",
"type": "application/json",
"method": "GET”
}, {
"href": "https://data.mycity.example.com/transport/api/v2/maps/52",
"rel": "describedby",
"type": "application/json",
"method": "GET"
}]
}


Cómo funciona unha API REST?

A comunicación entre servidor e clientes sobre a Web realízase mediante o intercambio de mensaxes HTTP nun contexto seguro de interacción.

As mensaxes son de dous tipos:

  • peticións, enviadas polo cliente ó servidor para solicitar o inicio dalgunha acción para interactuar con recursos de información
  • respostas, que constitúen a materialización da acción solicitada.

Cada petición contén toda a información necesaria para executar a acción requirida: toda a interacción realízase nun único ciclo e non é preciso recordar ningún estado previo para satisfacerla. Esta importante característica da arquitectura REST implica que o contido solicitado polo cliente non queda almacenado no servidor entre solicitudes; a información sobre o estado da sesión a manexa o cliente.

As accións ou operacións, tamén chamadas métodos, especifícanse mediante o uso dos denominados verbos HTTP.

Nunha petición, cada método ten encomendada unha misión. Calquier sistema que expoña unha API REST dispón dos seguintes métodos:

Verbos HTTP
  • GET: recupera unha representación dun recurso de datos.
  • HEAD: recupera a cabecera dunha resposta.
  • POST: crea un novo recurso de datos.
  • PUT: actualiza un recurso existente (ou creao se non existe previamente).
  • PATCH: realiza unha actualización parcial dun recurso.
  • DELETE: elimina un recurso de datos existente.
  • OPTIONS: recupera as opcións de comunicación para o recurso solicitado.

Os métodos expostos poden incluir un corpo de mensaxe para especificar detalles sobre a petición.

API REST e Datos Abertos

No contexto dos Datos Abertos:

  • non é habitual dispor dos métodos PUT, PATCH o DELETE.
  • normalmente disponse dos métodos GET, HEAD ou POST, usando GET como a operación común para o acceso e descarga de recursos de datos.

APIs para o acceso a Datos Abertos

Cando é recomendable habilitar unha API

Ventajas-api.PNG

Sempre que sexa posible. Os métodos habituais para consumir datos abertos son a dispoñibilidade de ficheiros descargables e o acceso a datos de forma automatizada a través de APIs (métodos que no son excluíntes).

Desde o punto de vista da publicación de datos, requiere un maior esforzo inicial habilitar APIs de acceso estables e ben documentadas; con todo resulta a medio prazo beneficioso para o publicador, quen aumenta as capacidades de innovación permitindo aos desenvolvedores crear novas aplicacións e servizos explotando datos reutilizables.

Unha boa estratexia de apertura de datos terá disponible a última versión dos datos a través de APIs e tamén os históricos xenerados con anterioridade, adecuadamente versionados, en ficheiros estáticos descargables.

A dispoíibilidade de APIs é o mecanismo máis eficiente para consumir datos con alta frecuencia de actualización, isto é, cercanos ó tempo real, de tal xeito que os sistemas que producen os datos poidan facelos dispoñibles de xeito automático.

Será aconsellable dispor APIs se os conxuntos de datos:

  • son grandes
  • de alta frecuencia de actualización
  • de alta complexidade

Así será posible para o deseñador modelar as representacións dos datos axeitadamente e permitir aplicar determinadas operacións de filtrado e selección.

Onde se están publicando APIs?

Existen Iniciativas de Datos Abertos da Administración Pública en España que incorporan a dispoñibilidade de APIs nas súas estratexias de apertura:

Un espazo de referencia para observar a evolución da denominada "economía das APIs" é o repositorio do sitio web especializado Programmable Web. É un importante centro de recursos para o desenvolvemento de APIs publica un dos directorios máis completos.

Entre outras categorías, detalla un número relevante de APIs dispoñibles:

Algunhas APIs de notable éxito e sinxelo uso están dispoñibles en empresas que xestionan volúmenes inxentes de información:

Están moi ben documentadas e son un referente importante para comprender o alcance dunha boa documentación.

Exercicios

Referencias

Datos abertos en España

Información de la Secretaría de Estado de Digitalización e Inteligencia Artificial del Ministerio de Asuntos Económicos y Transformación Digital:

Datos abertos en Galicia