Una API para manejar una simple “TODO List”, es solo una lista de tareas compartida para todos los usuarios que se registren, en paticular aca solo se necesita 1 usuario.
Se implementaron los siguientes endpoints:
- Registrar un usuario.
- Agregar tareas al TODO list.
- Marcar una tarea como resuelta.
- Obtener lista de tareas con su estado actual.
- Autenticacion manejada con TokenAuthentication
Para el correcto funcionamiento se deben instalar los requerimientos anteriores. Se utiliza una base de datos sqlite por defecto.
Ejecutar el servidor de la siguiente forma:
python manage.py runserver 0.0.0.0:8000
Esto ejecuta el servidor que escucha las peticiones desde cualquier IP, a la IP del servidor ( no sólo localhost ) desde el puerto 8000 por defecto.
Para realizar las llamadas al servidor se recomienda hacerlas con Curl o Httpie.
Registra un nuevo usuario y retorna el token generado, que servira para realizar todas las transacciones posteriores. No necesita autorizacion y se debe enviar username y password via POST.
curl -H "Content-Type: application/json" -X POST -d '{"username":"<username>", "password":"<password>"}' http://localhost:8000/todo/register_user/
{"<token>"}
Pide un token de un usuario ya registrado. No necesita autorización y se debe enviar username y password via POST.
curl -H "Content-Type: application/json" -X POST -d '{"username":"<username>", "password":"<password>"}' http://localhost:8000/todo/get_token/
{"token":"<token>"}
Pide todas las tareas disponibles con sus estados correspondientes se debe enviar el token en el header, para pasar la autorizacion via GET.
curl -H 'Authorization: Token <token>' -X GET http://localhost:8000/todo/todolist/
[
{"name":"tareita","status":false},
{"name":"tarea2","status":true"},
{"name":"nueva_tarea","status":true}
]
Agrega una nueva tarea a la todolist. Se debe enviar token en header y el name de la nueva tarea via POST.
curl -H "Content-Type: application/json" -H 'Authorization: Token <token>' -X POST -d '{"name":"<task_name>"}' http://localhost:8000/todo/add_task/
{"name":"tareita","status":false}
Resuelve una tarea y le cambia el status de false a true. Se debe enviar el task_name al final de la url via POST.
curl -H "Content-Type: application/json" -H 'Authorization: Token <token>' -X POST http://localhost:8000/todo/resolve_task/<task_name>
{"name":"tareita","status":true}