[TAREA GUIADA] Crear app productos con endpoints obtener y guardar #2
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Descripcion
Bienvenida al equipo! Esta es tu primera tarea. Esta pensada para que aprendas la arquitectura del proyecto paso a paso.
El objetivo es crear una nueva app Django llamada
productossiguiendo exactamente el mismo patron que ya existe enpromociones. Tendras que crear el modelo, dos endpoints (obteneryguardar), los logs y los datos de prueba.0. Preparar el entorno local
0.1 Clonar el repositorio
Abre CMD o PowerShell y ejecuta:
0.2 Obtener el fichero
.envLos
.envnunca se versionan en el repo del proyecto. Estan en un repo separado llamadoenvironments:Navega a
django-core-base/pre_dev/y descarga el fichero.env.Copiatelo dentro del repo clonado en esta ruta exacta:
0.3 Levantar Docker
La primera vez tarda unos minutos descargando imagenes. Verifica que arranca:
Deberias ver:
La API estara disponible en: http://localhost:8000
POSIBLE ERROR: entrypoint con saltos de linea incorrectos (CRLF)
Si ves este error al levantar Docker:
o
Ejecuta esto desde la carpeta del repo y vuelve a levantar:
1. Crear los ficheros de la app
Crea la carpeta
app/productos/y dentro los siguientes ficheros:1.1
app/productos/__init__.pyFichero vacio. Solo crealo.
1.2
app/productos/apps.py1.3
app/productos/models.py1.4
app/productos/acciones.pyAqui va toda la logica de negocio. Las queries usan placeholders
%s— nunca concatenes strings con datos del usuario (SQL injection):1.5
app/productos/views.pyCada endpoint tiene 4 bloques obligatorios con LogService. Esto es el estandar del proyecto para auditoria de todas las llamadas:
1.6
app/productos/urls.py1.7
app/productos/fixtures/semillas.jsonCrea la carpeta
fixtures/dentro deproductos/y el fichero con estos datos de prueba:2. Registrar la app en Django
2.1
app/api_config/settings.pyBusca
INSTALLED_APPSy anade'productos':2.2
app/api_config/urls.pyAnade la ruta de productos:
3. Crear y aplicar las migraciones
Desde la carpeta
deployments/:Para cargar las semillas manualmente sin reiniciar:
4. Probar con Hoppscotch
Entra en https://hoppscotch.io (funciona en el navegador, sin instalar nada).
4.1 Importar la coleccion y los entornos
En el repo
django-core-basehay dos ficheros en la raiz:postman_collection.json- las llamadaspostman_environments.json- los entornos (LOCAL, DEV, PROD)En Hoppscotch:
postman_collection.jsonpostman_environments.json-> activa el entorno LOCAL4.2 Obtener el token
Ejecuta primero Auth -> Obtener Token (Login). El script de la coleccion guarda el
access_tokenautomaticamente.4.3 Probar
obtenerCrea una nueva llamada manual:
{{base_url}}/api/productos/obtener/Authorization: Bearer {{access_token}}Resultado esperado: datos del Producto Ejemplo A.
4.4 Probar
guardar{{base_url}}/api/productos/guardar/Authorization: Bearer {{access_token}}Resultado esperado:
{"id": 4, "mensaje": "Producto creado correctamente"}5. Subir los cambios
Con GitHub Desktop (recomendado para empezar)
django-core-basepre-dev. Si no, haz clic en el desplegable y seleccionala. Si no aparece, haz clic en Fetch origin primero.feat: crear app productos con endpoints obtener y guardarListo. Los cambios estaran en la rama
pre-devdel repositorio.Con CMD (alternativa)
Si prefieres la terminal:
6. Verificar con HeidiSQL
HeidiSQL es la herramienta para conectarse directamente a la base de datos PostgreSQL que corre dentro de Docker y ver los datos y los logs de tus llamadas.
6.1 Conectarse a la base de datos
localhost5432django_userdjango_passworddjango_test6.2 Ver los logs de tus endpoints
Cada llamada que haces a la API queda registrada automaticamente en la tabla
audit_logsgracias al LogService.Abre una nueva pestana de consulta en HeidiSQL (Ctrl+T) y ejecuta:
Veras una fila por cada bloque de LogService que se ejecuto. El campo
status_codeindica en que punto esta el log:0100200400500Los campos
requestyresponseson JSON — HeidiSQL los muestra como texto, puedes copiarlos y pegarlos en cualquier visor JSON online para verlos bien formateados.6.3 Ver los productos de la tabla
Para ver todos los productos que hay en la base de datos:
Para comprobar que el ultimo producto que insertaste con
guardarllego correctamente:6.4 Ver el log completo de una llamada concreta
Si quieres ver exactamente que recibio y que respondio el endpoint
guardaren cada llamada:Y para
obtener:Checklist de entrega
app/productos/__init__.pyapp/productos/apps.pyapp/productos/models.pycon 5 camposapp/productos/acciones.pycongetDataysetDataapp/productos/views.pycon 4 bloques LogService en cada endpointapp/productos/urls.pyapp/productos/fixtures/semillas.jsoncon 3 productosproductosenINSTALLED_APPSapi/productos/enapi_config/urls.pyobtenerfuncionando en Hoppscotchguardarfuncionando en Hoppscotchpre-devCualquier duda, pregunta directamente. Animo!