Ir al contenido principal
Laravel, shipping fast.
Apendices

Apendice A: Referencia rapida

Julian Beaujardin

Comandos esenciales de Artisan

# Project setup
php artisan key:generate              # Generate app key
php artisan migrate                   # Run migrations
php artisan db:seed                   # Seed database

# Make resources
php artisan make:model User -mfsc     # Model, migration, factory, seeder, controller
php artisan make:controller APIController --api
php artisan make:request StoreUserRequest
php artisan make:middleware CheckToken
php artisan make:job SendEmail
php artisan make:test FeatureTest
php artisan make:rule ValidDomain

# Run code
php artisan tinker                    # Interactive shell
php artisan test                      # Run tests
php artisan queue:work                # Process jobs

# Debugging
php artisan optimize                  # Cache config/routes/providers
php artisan route:list                # Show all routes
php artisan config:show app           # Show specific config

Codigos de estado HTTP habituales

| Código | Significado | Cuándo usarlo | |------|---------|------------| | 200 | OK | Petición correcta | | 201 | Created | Recurso creado | | 204 | No Content | Borrado correcto | | 400 | Bad Request | Formato de petición inválido | | 401 | Unauthorized | Falta autenticación o falló | | 403 | Forbidden | Autenticado pero sin acceso | | 404 | Not Found | El recurso no existe | | 422 | Unprocessable Entity | Falló la validación | | 429 | Too Many Requests | Límite de frecuencia alcanzado | | 500 | Server Error | Algo salió mal | | 503 | Unavailable | Servicio temporalmente caído |

Facades utiles

Auth::user()                          # Get current user
Cache::remember('key', 3600, fn())    # Cache with fallback
DB::select('SELECT *')                # Raw query
Event::dispatch(new OrderShipped())   # Dispatch event
File::get('path/to/file')             # Read file
Log::info('message', ['context'])     # Log message
Mail::send(new OrderMailed())         # Send email
Queue::dispatch(new Job())            # Queue job
Route::get('/path', Action::class)    # Define route
Storage::put('path', 'content')       # Store file
Validator::make($data, $rules)        # Validate data

Ayudantes de pruebas

$this->getJson('/api/endpoint')       # HTTP GET
$this->postJson('/api/endpoint', $data)
$this->putJson('/api/endpoint', $data)
$this->deleteJson('/api/endpoint')
$response->assertStatus(200)          # Check status
$response->assertJsonPath('key', value)
$response->assertJsonStructure([...])
$response->assertJson([...])

Apendice B: Guia de resolucion de problemas

P: Las pruebas van lentas R: Ejecútalas en paralelo: php artisan test --parallel

P: Los jobs de la cola no se procesan R: Comprueba que el worker está corriendo: php artisan queue:work. Después mira los jobs fallidos: php artisan queue:failed

P: Errores 404 en rutas válidas R: Limpia la caché de rutas: php artisan route:clear y regenérala: php artisan route:cache

P: Errores de conexión a la base de datos R: Revisa las credenciales del .env. Prueba la conexión con php artisan tinkerDB::connection()->getPdo()

P: La autenticación no funciona R: Verifica que el middleware está en el grupo de rutas, que el token se envía correctamente y que existe en la base de datos.

P: Problemas de memoria en operaciones largas R: Usa lotes para consultas grandes:

Model::chunk(1000, function ($records) {
    // Process $records
});

P: Consultas N+1 matando el rendimiento R: Usa precarga: Model::with(['relation'])->get(). Depura con DB::enableQueryLog()dd(DB::getQueryLog())

P: Errores de CORS en el navegador R: Comprueba que el middleware de CORS está registrado en bootstrap/app.php y verifica los orígenes permitidos en el .env.

P: El límite de frecuencia no funciona R: Comprueba que la caché está bien configurada. Pruébala: Cache::put('test', true)Cache::get('test')

P: Mensajes de validación en el idioma equivocado R: Revisa APP_LOCALE en el .env y que existan los ficheros de traducción en lang/[locale]/.


Conclusion

Construir APIs rápidas y fiables es un camino. Ahora tienes el conocimiento base para:

  1. Diseñar arquitectura escalable con patrones probados
  2. Implementar seguridad desde el primer día, con autenticación y autorización
  3. Manejar errores con elegancia mediante un manejo centralizado de excepciones
  4. Optimizar el rendimiento con cacheo y compresión
  5. Probar a fondo con suites completas
  6. Monitorizar de verdad con registro y observabilidad
  7. Publicar con confianza mediante tuberías de integración y despliegue continuos

Ideas clave

  • Convención sobre configuración: deja que los valores por defecto de Laravel te guíen
  • Seguridad de tipos: usa los tipos de PHP 8.4 para atrapar fallos pronto
  • Prueba todo: las pruebas automatizadas son tu red de seguridad
  • Monitoriza en producción: no puedes arreglar lo que no puedes ver
  • Planifica la evolución: diseña APIs que crezcan con elegancia
  • Documenta bien: la documentación clara reduce la carga de soporte
  • Segura por defecto: la seguridad es responsabilidad de todos

Siguientes pasos

  1. Empieza con un proyecto pequeño y aplica estos patrones
  2. Lee la documentación de Laravel para profundizar
  3. Estudia APIs de código abierto que funcionen bien
  4. Despliega a producción e itera
  5. Únete a la comunidad de Laravel y comparte lo que aprendas

¡Feliz publicación! 🚀


Recursos adicionales

Documentación oficial

Recursos de la comunidad

  • Laravel News (news.laravel.com)
  • Laracasts (laracasts.com) — tutoriales en vídeo
  • Laravel Forum (laracasts.com/discuss)
  • Stack Overflow (etiqueta: laravel)

Herramientas y servicios

  • Laravel Forge — despliegue de servidores
  • Laravel Vapor — despliegue serverless
  • Sentry — seguimiento de errores
  • Datadog — monitorización

Una guía práctica para publicar APIs REST en producción sin atascarse en complejidad innecesaria.

Este libro evoluciona junto a la Webplo License API, documentando patrones y decisiones reales tomadas en producción.