Lección 1: Introducción
![]()
En el siguiente curso me gustaría que aprendieras a conseguir un CRUD en Django usando REST Framework, una herramienta estandarizada para la creación de APIs con Django, y en segundo lugar, con Python.
Los requisitos mínimos son:
- Disponer instalada la versión más actualizada posible de Python 3.
- Un editor de texto. Te recomiendo, si estas empezando, Pycharm Community Edition o VSCode con el plugin de Python.
- Acceso al terminal.
Los objetivos a conseguir son los esenciales en cualquier API:
- Endpoint que liste libros.
- Endpoint que nos muestre los detalles de un libro concreto.
- Endpoint para añadir un libro.
- Endpoint para actualizar un libro existe.
- Endpoint que borre un libro existe.
- Crear test para todos los Endpoints que nos aseguren su funcionamiento en cualquier circunstancia.
Si eres impaciente y quieres probar in situ los resultados puedes abrir el terminal. A continuación puedes atacar a un servidor donde esta levantado una copia del código que vas a aprender.
Listar libros
Lamentablemente Heroku anunció que eliminaría sus planes gratuitos provocando que los ejemplos de esta lección no estén disponibles para probarlos con curl, ya que estaba desplegado en un Dyno gratutito. La situación sería diferente si el sitio recibiera suficientes donaciones recurrentes. Como no es el caso, puedes testearlo directamente en tu equipo a partir del código que se encuentra en el repositorio de GitHub.
curl https://example-of-crud-in-django-jrf.herokuapp.com/api/book/
Salida
[
{
"id": 1,
"title": "Things Fall Apart",
"country": "Nigeria",
"year": 1958,
"author": "Chinua Achebe",
"created_at": "2021-07-15T14:27:14.927177",
"updated_at": "2021-07-15T14:27:14.927213"
},
{
"id": 2,
"title": "Fairy tales",
"country": "Denmark",
"year": 1836,
"author": "Hans Christian Andersen",
"created_at": "2021-07-15T14:27:14.930223",
"updated_at": "2021-07-15T14:27:14.930233"
},
...
Obtener detalles de un libro
curl https://example-of-crud-in-django-jrf.herokuapp.com/api/book/1/
Salida
{
"id": 1,
"title": "Things Fall Apart",
"country": "Nigeria",
"year": 1958,
"author": "Chinua Achebe",
"created_at": "2021-07-15T14:27:14.927177",
"updated_at": "2021-07-15T14:27:14.927213"
}
Crear un libro
curl -XPOST -H "Content-type: application/json" -d '{"title": "The foundation", "country": "eeuu", "author": "Isaac Asimov", "year": "1951"}' https://example-of-crud-in-django-jrf.herokuapp.com/api/book/
Salida
{
"id": 101,
"title": "The foundation",
"country": "eeuu",
"year": 1951,
"author": "Isaac Asimov",
"created_at": "2021-07-15T14:47:25.262738",
"updated_at": "2021-07-15T14:47:25.262753"
}
Actualizar un libro
curl -XPUT -H "Content-type: application/json" -d '{"title": "The End of Eternity", "country": "eeuu", "author": "Isaac Asimov", "year": "1955"}' https://example-of-crud-in-django-jrf.herokuapp.com/api/book/1/
Salida
{
"id": 1,
"title": "The End of Eternity",
"country": "eeuu",
"year": 1955,
"author": "Isaac Asimov",
"created_at": "2021-07-15T14:47:25.262738",
"updated_at": "2021-07-15T14:50:47.697224"
}
Borrar un libro
curl -XDELETE https://example-of-crud-in-django-jrf.herokuapp.com/api/book/1/
Salida
{
"id": null,
"title": "The End of Eternity",
"country": "eeuu",
"year": 1955,
"author": "Isaac Asimov",
"created_at": "2021-07-15T14:47:25.262738",
"updated_at": "2021-07-15T14:50:47.697224"
}
Comprobar que el servidor esta activo
curl https://example-of-crud-in-django-jrf.herokuapp.com/ping/
Salida
{"ping": "pong!"}
Si te pierdes en algún paso, no dudes en consultar o descargar el código que tengo alojado en el repositorio de GitHub.
¿Estas preparado? ¡Empezamos!
Actividad 1
Crea un API para registrar los corredores de una carrera popular. Los datos necesarios son a tu elección.
Actividad 2
Crea un API para buscar o añadir series que has visto. Además debes ser capaz de darle una nota y listarlas por orden de nota.
Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.
¿Me invitas a un café? ☕
Puedes hacerlo usando el terminal.
ssh customer@andros.dev -p 5555
Comentarios
Nuevo comentario
Nueva replica {{ formatEllipsisAuthor(replyComment.author) }}
Escribe el primer comentario
{{ comments.length }} comentarios