Skip to content

Latest commit

 

History

History
71 lines (53 loc) · 2.28 KB

practica3.md

File metadata and controls

71 lines (53 loc) · 2.28 KB

Volver al índice

Práctica 3 » API REST - javalin

Realizar los ejercicios utilizando el framework Javalin y Kotlin.

En todos los casos deben controlarse los problemas e informar con los códigos y mensajes de error correspondientes.

Ejercicio 1: ToDo List

Escribir una interfaz que permita administrar tareas a través de una ToDo List.

Cada Tarea deberá contener:

  • ID
  • Título
  • Descripción
  • Fecha de Creación
  • Estado

Estados: Pendiente, Completa

Protocolo

  • GET /tasks: Trae todas las tareas
  • GET /tasks/:id: Trae la tarea con :id
  • POST /tasks/: Agrega una nueva tarea
    • Body: `{"title": ..., "description": ...}
    • El ID, la fecha de creación y el estado se deben generar automáticamente al crear la tarea
    • Estado: Pendiente
  • PUT /tasks/:id: Modifica una tarea
    • Body: `{"title": ..., "description": ...}
    • El ID y la fecha de creación no cambian
    • Si el estado es Pendiente se puede modificar, si es Completa debería devolver un error
  • DELETE /task/:id: Elimina una tarea
    • No importa el estado para eliminar una tarea
  • PUT /task/:id/done: Marca una tarea como Completa
  • PUT /task/:id/undone: Marca una tarea como Pendiente

Ejercicio 2: IMDB

Programar una API REST que permita buscar dentro un gran catálogo de películas.

Película:

  • Título
  • Descripción
  • Fecha de estreno
  • Directores
  • Actores
  • Rating

Protocolo

No se pedirá un protocolo de CRUD, con lo cual puede crear el catálogo dentro de la aplicación. Los directores y actores pueden ser listas de strings, no es necesario modelarlo.

  • GET /searchBy?title={title}&description={description}&directors={director1,director2,...}&actors={actor1,actor2,...}
    • Busca dentro del catálogo
    • Algunos ítems pueden tener contenido vacío
    • Internamente se deberían aplicar un criterio de "relevancia"
      • Primero los que matchean con todo
      • Luego los que matchean por título
      • Luego los que matchean por descripción
      • etc...
  • GET /ranking?min_rating={rating}&limit={limit}
    • Trae las películas ordenadas por rating descendiente (de mayor a menor)
    • Opcionalmente se puede definir un valor mínimo de rating que deben cumplir las películas
    • Opcionalmente se puede definir un límite de películas a traer