API

En esta sección se muestra la documentación de la API implementada con Swagger para no solo ver los métodos que ofrece el microservicio, sino también para poder testearlo, así como la documentación de cada función de los tests.

Swagger

El paquete flask-restplus usado para el desarrollo de la API-RESTful, poniéndole una serie de decoradores a los métodos, genera una documentación con Swagger que puede ser visualizada en el endpoint / de la API con Swagger UI y muestra tanto los métodos disponibles como los modelos JSON devueltos por la API (aumenta el zoom en el navegador si no lo ves bien).

_images/swagger.png

Swagger UI también ofrece la posibilidad de probar la API cómodamente como si uśaramos Postman por ejemplo. Nos dice los outputs que ofrece un endpoint y la posibilidad de hacer POST y PUT adjuntando cómodamente un JSON en el body de la petición. Para poder probar toda esta funcionalidad, como ya tengo la app corriendo en Heroku, puedes acceder a ella simplemente haciendo click aquí

Tests

Toda la funcionalidad referente a los tests sobre la API la puedes encontrar en el archivo tests/tests_api.py. A continuación se muestra una breve documentación sobre cada método implementado.

test_api.test_delete_student(client)[source]

Testea si se recibe código 204 en la ruta /api/v1/students/<student_id> con una petición DELETE al mandar un identificador de estudiante válido, o 404 si no existe ese identificador.

Parameters:client (Flask.test_client) – Mock de la API para mandar peticiones durante los tests.
test_api.test_get_student(client, valid_student)[source]

Testea si se recibe código 200 en la ruta /api/v1/students/<student_id> con una petición GET al mandar un identificador de estudiante válido a la vez que comprueba que el JSON recibido sea adecuado, o 404 si el identificador de estudiante no es válido.

Parameters:
  • client (Flask.test_client) – Mock de la API para mandar peticiones durante los tests.
  • valid_student (dict) – JSON con una estructura de estudiante válida.
test_api.test_get_students(client)[source]

Testea si se recibe código 200 en la ruta /api/v1/students con una petición GET y que el resultado sea una lista vacía ya que no hay datos previamente cargados.

Parameters:client (Flask.test_client) – Mock de la API para mandar peticiones durante los tests.
test_api.test_post_student(client, valid_student)[source]

Testea si se recibe código 201 en la ruta /api/v1/students con una petición POST al mandar un esquema de estudiante válido o 400 si no es válido (en este caso se envía un json vacío).

Parameters:
  • client (Flask.test_client) – Mock de la API para mandar peticiones durante los tests.
  • valid_student (dict) – JSON con una estructura de estudiante válida.
test_api.test_put_student(client, valid_student)[source]

Testea si se recibe código 204 en la ruta /api/v1/students/<student_id> con una petición PUT al mandar un esquema e identificador de estudiante válido. Si no se encuentra el estudiante comprueba si devuelve 404, o 400 si el esquema no es válido (en este caso se envía un json vacío).

Parameters:
  • client (Flask.test_client) – Mock de la API para mandar peticiones durante los tests.
  • valid_student (dict) – JSON con una estructura de estudiante válida.
test_api.test_status(client, status)[source]

Testea si se recibe código 200 en la ruta /status con una petición GET y que el resultado sea un JSON con formato {‘status’: “OK”}

Parameters:client (Flask.test_client) – Mock de la API para mandar peticiones durante los tests.