Resumen

Aprende a completar el CRUD de un recurso en Django Rest con una sola URL de detalle. Aquí verás cómo estructurar endpoints para listar, crear, modificar y borrar Patients, usando serializers, validación, códigos de estado y respuestas en JSON de forma clara y consistente.

CRUD de Patients con una sola URL

En lugar de crear múltiples rutas, se reutiliza la misma vista Detail Patient con la URL de detalle que incluye el ID del paciente. Así, la búsqueda del objeto y el manejo de errores se centralizan y se evita duplicar código.

¿Cómo se aprovecha una única vista con endpoints GET, PUT y DELETE?

  • Reutilizar la misma URL: Patients/.
  • Centralizar la consulta del paciente y responder 404 si no existe.
  • Si el método es GET: devolver el paciente serializado.
  • Si el método es PUT: actualizar el paciente con validación.
  • Si el método es DELETE: borrar el registro y responder sin contenido.

¿Qué lógica común evita duplicación y errores?

  • Extraer la búsqueda del paciente al inicio de la vista.
  • Retornar 404 not found de forma consistente.
  • En función del método, ejecutar solo la acción necesaria.

Actualización con put y validación

Para modificar un paciente con PUT, se inicializa el serializer con dos fuentes: la instancia existente y los datos entrantes del usuario. Esto permite aplicar reglas de validación y luego guardar los cambios en base de datos de manera segura.

¿Cómo se configura el serializer para modificar?

  • Inicializar con la instancia: el paciente recuperado por ID.
  • Pasar los datos del cliente: request.data como data del serializer.
  • Validar con serializer.is_valid con raise exception para mostrar errores.
  • Guardar con serializer.save para persistir en el modelo (ModelSerializer).

¿Qué respuestas devuelve la actualización?

  • Confirmar la modificación con status 201 y el objeto actualizado.
  • Ver cambios reflejados al recargar, confirmando escritura en base de datos.
  • Mantener respuestas en JSON para consistencia del endpoint.

Borrado con delete y respuestas

Una vez habilitado el método DELETE, incluso la interfaz navegable de Django Rest muestra el botón Delete. La acción se realiza directamente sobre el modelo y la API responde de forma clara, indicando que no hay contenido que devolver.

¿Cómo se ejecuta el borrado desde el modelo?

  • Detectar el método DELETE en la vista de detalle.
  • Llamar a delete sobre la instancia recuperada.
  • No es necesario usar el serializer para esta acción.

¿Qué respuesta envía el API al borrar?

  • Retornar status 204 no content tras el borrado.
  • Si se consulta de nuevo el recurso: responder 404 not found.

¿Qué habilidades y conceptos aplicas aquí?

  • Diseño de endpoints REST con una sola URL de detalle.
  • Manejo de métodos HTTP: GET, POST, PUT, DELETE.
  • Validación con serializers: instancia existente + request.data.
  • Persistencia con serializer.save en ModelSerializer.
  • Códigos de estado: 404 para inexistente, 201 para modificación, 204 para borrado.
  • Respuestas en JSON y pruebas en el navegador.

¿Quieres seguir practicando? replica la misma estructura con Doctores y cuenta cómo te fue.