Proyecto Final
  • Descripción del Proyecto
  • Parte 1: Creación de la API
  • Parte 2: Consumo de la API
  • Requisitos de Entrega

Proyecto Final PHP

Sistema de API de Productos con PHP

Instrucciones Generales

Este proyecto está diseñado para aplicar todos los conocimientos adquiridos durante el curso, especialmente en las áreas de APIs RESTful, bases de datos, y desarrollo web con PHP.

Objetivos del Proyecto

- Desarrollar una API RESTful para la gestión de productos.
- Crear una aplicación cliente para consumir la API.
- Implementar buenas prácticas de programación y seguridad.

Descripción del Proyecto

El proyecto consiste en desarrollar un sistema completo de gestión de productos utilizando PHP, dividido en dos componentes principales:

Parte 1: API RESTful

Desarrollo de una API RESTful para la gestión de productos con las siguientes características:

  • Implementación del CRUD completo
  • Respuestas en formato JSON
  • Manejo adecuado de códigos de estado HTTP
  • Validación de datos de entrada
Parte 2: Aplicación Cliente

Desarrollo de una interfaz para consumir la API de productos:

  • Listado y visualización de productos
  • Formularios para crear y editar productos
  • Funcionalidad para eliminar productos
  • Gestión de imágenes de productos

Parte 1: Creación de la API RESTful

Estructura de Datos del Producto
productos.sql

CREATE TABLE productos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    precio DECIMAL(10,2) NOT NULL,
    imagen VARCHAR(255),
    fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
                                            
Endpoints de la API a Desarrollar
Método Ruta Descripción Código de Respuesta
GET /api/productos Obtener todos los productos 200 OK
GET /api/productos/{id} Obtener un producto específico 200 OK / 404 Not Found
POST /api/productos Crear un nuevo producto 201 Created / 400 Bad Request
PUT /api/productos/{id} Actualizar un producto existente 200 OK / 404 Not Found
DELETE /api/productos/{id} Eliminar un producto 204 No Content / 404 Not Found
Estructura Recomendada de Archivos
  • api/
    • index.php (Punto de entrada)
    • config.php (Configuración)
    • db.php (Conexión BD)
    • controllers/
      • ProductoController.php
    • models/
      • Producto.php
    • uploads/
      • productos/ (Imágenes)
Recomendaciones:
  • Utilizar PDO para conexiones a la base de datos
  • Implementar validación de datos en el controlador
  • Sanitizar entradas para prevenir inyección SQL
  • Definir correctamente los encabezados HTTP
  • Crear métodos para el manejo de archivos (imágenes)

Parte 2: Consumo de la API

Estructura de la Aplicación Cliente
  • app-cliente/
    • index.php (Listado de productos)
    • detalle.php (Vista detalle)
    • crear.php (Formulario creación)
    • editar.php (Formulario edición)
    • config.php (Configuración)
    • css/
    • js/
      • api.js (Funciones de consumo)
Página Principal (index.php):
  • Listado de productos en formato de tarjetas o tablas
  • Implementar filtrado y paginación
  • Enlaces a vistas detalladas de cada producto
  • Botón para añadir nuevos productos

Requisitos y Criterios de Evaluación

Requisitos Técnicos
  • API RESTful Completa

    Implementación de todos los endpoints (GET, POST, PUT, DELETE)

  • Base de Datos MySQL

    Crear e implementar la estructura de la base de datos

  • Manejo de Imágenes

    Subida, almacenamiento y visualización de imágenes de productos

  • Interfaz de Usuario

    Frontend funcional para interactuar con la API

  • Validación de Datos

    Implementar validaciones tanto en el cliente como en el servidor

Entrega del Proyecto
  • Repositorio de GitHub

    Subir todo el código a un repositorio con instrucciones de instalación

  • Documentación

    README detallado, documentación de la API y capturas de pantalla

  • Script SQL

    Script para crear la base de datos y tablas necesarias

  • Demostración

    Video o demostración en vivo del funcionamiento del proyecto

Recursos Adicionales

Documentación PHP
php.net/manual
Códigos de Estado HTTP
mozilla.org/http-status
MySQL Reference
dev.mysql.com/doc