Antes de iniciar el desarrollo, es fundamental contar con un entorno bien configurado. Esta guía te acompaña paso a paso en la instalación de herramientas clave, la conexión con MongoDB Atlas y la creación de índices únicos.
composer install
composer update
php artisan key:generate
composer require mongodb/laravel-mongodb
composer require laravel/sanctum
php artisan vendor:publish --tag=sanctum-config
php artisan serveGit permite llevar control de versiones y colaborar en equipo.
git config --global user.name "VictoriaVMC"
git config --global user.email "victoriavmc@gmail"
git --versionEditor recomendado por su flexibilidad y extensiones útiles.
Extensiones sugeridas:
- GitHub Pull Requests and Issues
- PHP Intelephense
- Laravel Blade Snippets
- React Developer Tools
En Fedora:
sudo dnf install -y phpComposer:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', '...') === '...') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }"
php composer-setup.php
php -r "unlink('composer-setup.php');"
composer -VModificar el .ini y descomentar:
extension=zip
extension=openssl
extension=fileinfocomposer global require laravel/installer
laravel new nombre-proyecto
php artisan serveVerificar versión:
php -vInstalar paquetes:
sudo dnf install php-devel php-pear
yes '' | sudo pecl install mongodb
echo "extension=mongodb.so" | sudo tee /etc/php.d/40-mongodb.ini
php -m | grep mongodbInstalar drivers en Laravel:
composer require mongodb/laravel-mongodb- Crear cuenta y clúster.
- Configurar usuario, contraseña y base de datos.
- Obtener URI de conexión.
.env
DB_CONNECTION=mongodb
DB_HOST='info'
DB_PORT=27017
DB_DATABASE=nombre_de_tu_bd
DB_USERNAME='creas usuario'
DB_PASSWORD='creas contrasenia'config/database.php
'mongodb' => [
'driver' => 'mongodb',
'dsn' => 'mongodb+srv://prueba:[email protected]/nombreBd?retryWrites=true&w=majority&appName=nombreBd',
'database' => env('DB_DATABASE', 'nombreBd'),
'options' => [
'ssl' => true, //escencial para atlas
],
],php artisan tinker
DB::connection('mongodb')->getClient()->listDatabases();| Concepto | Convención |
|---|---|
| Modelo | Singular (Usuario) |
| Colección | Plural (usuarios) |
| Controlador | Plural (UsuarioController) |
<?php
use Jenssegers\Mongodb\Eloquent\Model;
class Rol extends Model
{
protected $connection = 'mongodb';
protected $collection = 'rols'; //definis el nuevo nombre
protected $fillable = ['rol', 'permisos'];
}php artisan make:model Student -m --apiphp artisan migratephp artisan make:command CrearAtributosUnicosOIndicesMongophp artisan app:CrearAtributosUnicosOIndicesMongo- Evita crear índices en cada inserción.
- Mantiene los modelos limpios.
- Fácil de mantener y extender.
- Compatible con MongoDB Atlas sin depender de migraciones SQL.
php artisan install:apiEs un instalador rápido que transforma tu proyecto en un backend API con autenticación lista para usar, en lugar de un proyecto Laravel tradicional con vistas Blade.
- Instala Sanctum (o el sistema de autenticación elegido) → por eso viste que se descargó laravel/sanctum.
- Configura el auth para tokens → te deja lista la base para que tu aplicación emita y valide tokens de acceso.
- Configura rutas por defecto en routes/api.php.
- Ajusta providers y middlewares necesarios para que el proyecto funcione como API.
- Deja el entorno limpio, sin plantillas de Blade ni cosas de frontend, ya que el frontend lo harías con React, Vue, Angular, etc.
Con APIs en Laravel (ejemplo: después de correr php artisan install:api), lo más común es definir las rutas en el archivo:
routes/api.phpLaravel ofrece una forma rápida de generar automáticamente todas las rutas necesarias para un CRUD básico usando:
Route::apiResource('posts', PostController::class);Con apiResource, se crean las siguientes rutas:
- GET /posts → index (listar recursos)
- POST /posts → store (crear recurso)
- GET /posts/{id} → show (mostrar recurso específico)
- PUT/PATCH /posts/{id} → update (actualizar recurso)
- DELETE /posts/{id} → destroy (eliminar recurso)
- Route::resource crea las 7 rutas: index, create, store, show, edit, update, destroy.
- Route::apiResource crea solo las 5 necesarias para APIs (sin create ni edit, porque esas vistas las maneja el frontend).
Levantas el servidor:
php artisan servephp artisan config:publish cors