Skip to content

inf-fp/dapw-ud4-api-rest-laravel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel API REST de Libros

Esta é unha aplicación Laravel mínima para xestionar un CRUD de libros usando unha API REST. Permite almacenar e xestionar libros con titulo, autor e editorial. Toda a aplicación está conteinerizada con Docker, incluíndo MariaDB e phpMyAdmin para a administración da base de datos.


Requisitos

  • Docker & Docker Compose
  • Make (opcional, pero recomendado)

Estrutura do proxecto

.
├── Dockerfile
├── docker-compose.yml
├── Makefile
├── entrypoint.sh
├── src/               # Código de Laravel
│   ├── app/
│   ├── config/
│   ├── routes/
│   │   └── api.php
│   └── ...
├── .env               # Variables de entorno para a base de datos

Configuración do contedor

  • A aplicación Laravel corre no contedor laravel_app.
  • MariaDB corre no contedor mariadb.
  • phpMyAdmin corre no contedor phpmyadmin (porta 8081).

Variables de entorno (.env)

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:YOUR_APP_KEY
APP_DEBUG=true
APP_URL=http://localhost:8080

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel

Comandos con Makefile

  • Levantar contedores
make up
  • Parar contedores
make down
  • Entrar no contedor da app
make bash
  • Instalar dependencias de Composer
make composer-install
  • Executar migracións
make migrate
  • Limpar caches de Laravel
make cache-clear
  • Crear modelo
make model NAME=Libro
  • Crear controlador
make controller NAME=LibroController

API REST de Libros

  • Listar libros
curl -i http://localhost:8080/api/libros
  • Crear un libro
curl -i -X POST http://localhost:8080/api/libros \
     -H "Content-Type: application/json" \
     -d '{
           "titulo": "O Señor dos Aneis",
           "autor": "J.R.R. Tolkien",
           "editorial": "Minotauro"
         }'
  • Mostrar un libro
curl -i http://localhost:8080/api/libros/1
  • Actualizar un libro
curl -i -X PUT http://localhost:8080/api/libros/1 \
     -H "Content-Type: application/json" \
     -d '{
           "titulo": "O Hobbit"
         }'
  • Eliminar un libro
curl -i -X DELETE http://localhost:8080/api/libros/1

API REST de Discos

A versión 2 da aplicación engade Discos, con CRUD completo (crear, listar, actualizar, eliminar).

Rutas

Acción Método Endpoint
Listar todos GET /api/discos
Crear POST /api/discos
Ver un disco GET /api/discos/{id}
Actualizar PUT /api/discos/{id}
Eliminar DELETE /api/discos/{id}

Exemplo de peticións con curl

Listar discos

curl -i http://localhost:8080/api/discos

Crear un disco

curl -i -X POST http://localhost:8080/api/discos \
     -H "Content-Type: application/json" \
     -d '{
           "titulo": "Abbey Road",
           "artista": "The Beatles",
           "genero": "Rock",
           "ano": 1969
         }'

Ver un disco concreto

curl -i http://localhost:8080/api/discos/1

Actualizar un disco

curl -i -X PUT http://localhost:8080/api/discos/1 \
     -H "Content-Type: application/json" \
     -d '{"titulo":"Let It Be"}'

Eliminar un disco

curl -i -X DELETE http://localhost:8080/api/discos/1

Administración de Base de Datos

  • phpMyAdmin dispoñible en http://localhost:8081
  • Usuario: laravel
  • Contraseña: laravel
  • Base de datos: laravel

Notas

  • O Controller de libros sempre devolve JSON, sen Blade nin vistas.
  • O proxecto é totalmente conteinerizado para facilitar o desenvolvemento e probas locais.
  • Para limpar completamente a cache ou configuración de Laravel, usar make cache-clear.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published