Objetivo 8: Diseño de un API REST con tests de integración

Descripción

Se trata de diseñar un API REST para nuestra aplicación, con un status básico y con tests de integración que se ampliarán en el objetivo siguiente.

Prerrequisitos

Haber pasado los tests del objetivo anterior, servicios esenciales en la nube.

Explicación

El diseño de un API es tan importante como la implementación y debe seguir una serie de reglas específicas, que en principio estén separadas de la propia implementación.

Los APIs se construyen, en general, en torno al concepto de recurso, y son una serie de operaciones sobre un recurso que siguen las buenas prácticas sobre los diseños de los APIs REST. En general, se trata de diseñar las APIs de forma que siempre quede claro cuál es el recurso que se va a usar, y añadir una serie de peticiones sobre ese recurso; un recurso vendría a ser un objeto, pero la cuestión es que el recurso va a tener siempre el mismo URI que se conservará a lo largo de las diferentes peticiones.

Hay que recordar que el API es el acceso a todas las funciones de nuestra aplicación, no sólo creación y recuperación de objetos. Deberá haber alguna forma de que se acceda a la lógica de negocio, invocando por ejemplo aquellos URIs que la lógica de negocio devuelva. En general, hay que pensar en cómo procedería el flujo de trabajo en este API REST, sobre todo porque en el objetivo posterior habrá que programar tests que sigan más o menos ese flujo para ver que funciona correctamente.

En este objetivo no hay que hacer más que el diseño de las rutas del API. Se podrá hacer en un documento aparte. Lo principal es la elección del framework, la creación de una ruta de comprobación, y la integración de la configuración (incluyendo posiblemente remota) y los registros de actividad.

Información adicional

Del curso 0 se puede consultar el material sobre tests de integración.

Lista de comprobación

* [ ] ¿Has justificado tu elección de un framework REST?
* [ ] ¿Las rutas están organizadas alrededor de un recurso?
* [ ] ¿Has usado cada verbo HTTP con su forma convencional más aceptada?

Entrega de la práctica

Subir los fuentes a GitHub y hacer un pull request al documento que describa las prácticas y que se anunciará en la web de la asignatura.

Como se seguirán lanzando los tests, sólo habrá que actualizar los mismos, en el contenedor si es posible, para que sigan pasando una vez que se añadan los tests y dependencias correspondientes a este objetivo. Habrá que añadir una clave framework a iv.yaml que indique el nombre del framework que se ha elegido.

Objetivos

Los objetivos que se tienen que alcanzar son los siguientes:

  1. Elegir un framework y justificarlo adecuadamente.
  2. Usar buenas prácticas en el diseño de rutas en el mismo.
  3. Preparar para tests y testear la ruta de comprobación que se haya solicitado.

Se tiene que continuar, como es natural, con las historias de usuario que se hayan creado desde el objetivo 1.

Se aconseja al estudiante que se concentre en los conceptos principales del hito (indicados arriba) y en entender los diferentes mecanismos del lenguaje para llevarlos a cabo. Se aconseja no buscar tutoriales, sino usar directamente la documentación y el manual de referencia del framework correspondiente. En frameworks de un cierto nivel, sobre todo si nos salimos de los populares, es improbable que CoPilot provea buenas soluciones al mismo

Valoración

El alcanzar este objetivo avanzará, en principio, 10% de la puntuación de este apartado.

A donde ir desde aquí

El último objetivo de la asignatura.