# 🚀 Inicio Rápido - Laravel 12 API

## ✅ Tu Proyecto Está Listo

**Proyecto:** Laravel 12.33.0 con Sanctum para APIs  
**Ubicación:** `/Users/sergio.flores/Documents/Soliat/sispac/descargaWS/api-project`

---

## 🎯 Iniciar en 3 Pasos

### 1️⃣ Levantar el Servidor
```bash
cd /Users/sergio.flores/Documents/Soliat/sispac/descargaWS/api-project
php artisan serve
```

### 2️⃣ Probar la API
```bash
# En otra terminal
curl http://localhost:8000/api/test
```

### 3️⃣ Ver Rutas Disponibles
```bash
php artisan route:list --path=api
```

---

## 📡 Endpoints Listos para Usar

### Endpoints Públicos

| Método | URL | Descripción |
|--------|-----|-------------|
| GET | `/api/test` | Prueba de conexión |
| GET | `/api/v1/health` | Health check |
| GET | `/api/v1/info` | Información del sistema |
| GET | `/api/v1/ejemplos` | Listar ejemplos |
| POST | `/api/v1/ejemplos` | Crear ejemplo |
| GET | `/api/v1/ejemplos/{id}` | Ver ejemplo |
| PUT | `/api/v1/ejemplos/{id}` | Actualizar ejemplo |
| DELETE | `/api/v1/ejemplos/{id}` | Eliminar ejemplo |

### Endpoints Protegidos (requieren token)

| Método | URL | Descripción |
|--------|-----|-------------|
| GET | `/api/user` | Usuario autenticado |
| GET | `/api/recursos-protegidos` | CRUD protegido |

---

## 🧪 Pruebas Rápidas con cURL

### Test Básico
```bash
curl http://localhost:8000/api/test
```

### Listar Ejemplos
```bash
curl http://localhost:8000/api/v1/ejemplos
```

### Crear Ejemplo
```bash
curl -X POST http://localhost:8000/api/v1/ejemplos \
  -H "Content-Type: application/json" \
  -d '{"nombre":"Prueba","descripcion":"Mi primera API"}'
```

---

## 🔐 Obtener Token de Autenticación

### Opción 1: Usando Tinker (Rápido)
```bash
php artisan tinker
```

```php
$user = \App\Models\User::factory()->create();
$token = $user->createToken('mi-token')->plainTextToken;
echo "Token: " . $token;
exit;
```

### Opción 2: Crear Usuario Manualmente
```bash
php artisan tinker
```

```php
$user = \App\Models\User::create([
    'name' => 'Admin',
    'email' => 'admin@api.com',
    'password' => bcrypt('password123')
]);
$token = $user->createToken('admin-token')->plainTextToken;
echo $token;
exit;
```

### Usar el Token
```bash
curl http://localhost:8000/api/user \
  -H "Authorization: Bearer TU_TOKEN_AQUI"
```

---

## 📚 Archivos de Documentación

| Archivo | Contenido |
|---------|-----------|
| `API_README.md` | Documentación completa de la API |
| `EJEMPLOS_PETICIONES.md` | Ejemplos de peticiones cURL y Postman |
| `CONFIGURACION.md` | Configuración avanzada y tips |
| `INICIO_RAPIDO.md` | Este archivo (guía rápida) |

---

## 🛠️ Comandos Útiles

```bash
# Ver todas las rutas
php artisan route:list

# Limpiar caché
php artisan cache:clear
php artisan config:clear

# Crear nuevo controlador
php artisan make:controller Api/MiControlador --api

# Crear modelo con migración
php artisan make:model MiModelo -m

# Ejecutar migraciones
php artisan migrate

# Ver logs en tiempo real
tail -f storage/logs/laravel.log

# Ejecutar tests
php artisan test
```

---

## 🎨 Ejemplo de Uso Completo

### 1. Crear un Nuevo Modelo
```bash
php artisan make:model Producto -mcr
```

### 2. Editar la Migración
```php
// database/migrations/xxxx_create_productos_table.php
public function up()
{
    Schema::create('productos', function (Blueprint $table) {
        $table->id();
        $table->string('nombre');
        $table->text('descripcion')->nullable();
        $table->decimal('precio', 10, 2);
        $table->integer('stock')->default(0);
        $table->timestamps();
    });
}
```

### 3. Ejecutar Migración
```bash
php artisan migrate
```

### 4. Agregar Rutas
```php
// routes/api.php
use App\Http\Controllers\ProductoController;

Route::apiResource('productos', ProductoController::class);
```

### 5. Implementar Controlador
```php
// app/Http/Controllers/ProductoController.php
public function index()
{
    return Producto::all();
}

public function store(Request $request)
{
    $validated = $request->validate([
        'nombre' => 'required|string|max:255',
        'precio' => 'required|numeric|min:0'
    ]);
    
    return Producto::create($validated);
}
```

### 6. Probar
```bash
curl http://localhost:8000/api/productos
```

---

## 🔥 Tips Importantes

- ✅ **Siempre valida** los datos de entrada
- ✅ **Usa API Resources** para formatear respuestas
- ✅ **Implementa paginación** en listados grandes
- ✅ **Protege rutas sensibles** con middleware auth:sanctum
- ✅ **Versiona tu API** (v1, v2, etc.)
- ✅ **Documenta tus endpoints**
- ✅ **Escribe tests** para tus APIs

---

## 🆘 Solución de Problemas

### Error: "Connection refused"
```bash
# Verifica que el servidor esté corriendo
php artisan serve
```

### Error: "SQLSTATE[HY000]"
```bash
# Verifica la configuración de base de datos en .env
# O ejecuta las migraciones
php artisan migrate
```

### Error: "Unauthenticated"
```bash
# Verifica que estés enviando el token en el header
# Authorization: Bearer TU_TOKEN
```

### Error: "Route not found"
```bash
# Limpia la caché de rutas
php artisan route:clear
php artisan cache:clear
```

---

## 📞 Siguiente Paso

**Ahora estás listo para desarrollar tu API!** 🎉

Consulta `API_README.md` para documentación detallada o `EJEMPLOS_PETICIONES.md` para más ejemplos de uso.

### Recomendaciones:
1. Lee `CONFIGURACION.md` para tips avanzados
2. Instala Postman o Insomnia para probar APIs
3. Configura tu base de datos en `.env` si usarás MySQL
4. Crea tus propios modelos y controladores

---

**Happy Coding! 🚀**
