Utilizaremos Axios, una biblioteca popular para realizar peticiones HTTP. Vue.js no tiene una solución nativa para esto, por lo que Axios es una excelente opción.
Primero, necesitamos instalar Axios en nuestro proyecto Vue.js. Puedes hacerlo ejecutando el siguiente comando:
npm install axios
Vamos a configurar Axios para realizar peticiones HTTP y manejar la respuesta en un componente Vue.
// api.js (Archivo opcional para configurar Axios)
import axios from 'axios';
const apiClient = axios.create({
baseURL: 'https://jsonplaceholder.typicode.com',
withCredentials: false,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
}
});
export default apiClient;
// main.js
import { createApp } from 'vue';
import App from './App.vue';
const app = createApp(App);
app.mount('#app');
Peticiones HTTP con Axios
- {{ post.title }}
Instalamos Axios usando npm install axios
y, opcionalmente, configuramos un cliente Axios en un archivo separado (api.js
). Esto nos permite reutilizar la configuración de Axios en diferentes partes de la aplicación.
En el componente App.vue
, configuramos el método fetchData
para realizar una petición GET utilizando Axios. Usamos la sintaxis async/await
para manejar la petición de manera asíncrona.
posts
en el data
para almacenar los datos que recibimos de la API.fetchData
: Definimos un método fetchData
que realiza una petición GET a https://jsonplaceholder.typicode.com/posts
. Al recibir la respuesta, actualizamos posts
con los datos recibidos.try/catch
para manejar posibles errores durante la petición.Usamos v-for
para iterar sobre la lista de posts
y mostrar cada título en una lista desordenada.
npm install axios
.api.js
).v-for
para mostrar datos recibidos de la API en la interfaz de usuario.vamos a aprender cómo manejar la autenticación y la autorización en una aplicación Vue.js utilizando Vue Router y Axios para interactuar con una API.
Primero, necesitamos instalar las siguientes dependencias:
npm install axios vue-router@next
Vamos a configurar Axios y Vue Router en nuestro proyecto para manejar la autenticación y la autorización.
// api.js (Configuración de Axios)
import axios from 'axios';
const apiClient = axios.create({
baseURL: 'https://example.com/api',
withCredentials: true,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
}
});
export default apiClient;
// router.js (Configuración de Vue Router)
import { createRouter, createWebHistory } from 'vue-router';
import Home from './components/Home.vue';
import Login from './components/Login.vue';
import Dashboard from './components/Dashboard.vue';
const routes = [
{ path: '/', component: Home },
{ path: '/login', component: Login },
{ path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } }
];
const router = createRouter({
history: createWebHistory(),
routes
});
router.beforeEach((to, from, next) => {
const loggedIn = localStorage.getItem('user');
if (to.matched.some(record => record.meta.requiresAuth) && !loggedIn) {
next('/login');
} else {
next();
}
});
export default router;
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');
er from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');
Login
{{ error }}
Dashboard
Welcome to the dashboard!
Creamos un archivo api.js
para configurar Axios con la base URL de nuestra API y las cabeceras necesarias. Esto nos permite reutilizar esta configuración en diferentes partes de nuestra aplicación.
En el archivo router.js
, definimos las rutas de nuestra aplicación y utilizamos meta
campos para especificar qué rutas requieren autenticación. Utilizamos beforeEach
para verificar si el usuario está autenticado antes de permitir el acceso a rutas protegidas.
En el componente Login.vue
, creamos un formulario de inicio de sesión que envía una petición POST a nuestra API de autenticación utilizando Axios. Si la autenticación es exitosa, almacenamos la información del usuario en localStorage
y redirigimos al usuario al Dashboard
.
En el componente Dashboard.vue
, utilizamos beforeRouteEnter
para verificar si el usuario está autenticado antes de permitir el acceso a la vista del dashboard.
beforeEach
en Vue Router para proteger rutas que requieren autenticación.localStorage
.beforeRouteEnter
para verificar la autenticación antes de renderizar componentes protegidos.vamos a aprender cómo usar plugins en Vue.js. Los plugins son una forma de añadir funcionalidad global a una aplicación Vue.js, extendiendo sus capacidades. Podemos utilizar plugins existentes o crear nuestros propios plugins.
Para este ejemplo, usaremos vue-toastification
, un plugin para mostrar notificaciones de toast.
Primero, necesitamos instalar el plugin:
npm install vue-toastification
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import Toast from 'vue-toastification';
import 'vue-toastification/dist/index.css';
const options = {
// Opciones de configuración del plugin
timeout: 5000,
position: 'top-right'
};
const app = createApp(App);
app.use(Toast, options); // Usamos el plugin de toast con opciones
app.mount('#app');
Uso de Plugins en Vue.js
Primero, instalamos el plugin vue-toastification
usando npm. Este comando descarga e instala el plugin en nuestro proyecto.
En el archivo main.js
, importamos el plugin y sus estilos. Luego, configuramos las opciones del plugin, como el tiempo de duración de las notificaciones y la posición en la pantalla. Usamos app.use
para integrar el plugin con nuestra aplicación Vue.
En el componente App.vue
, añadimos un botón que, al ser clicado, muestra una notificación de toast. Utilizamos el método $toast
proporcionado por el plugin para mostrar la notificación.
También podemos crear nuestros propios plugins para Vue.js.
// myPlugin.js
export default {
install(app, options) {
app.config.globalProperties.$myMethod = function () {
console.log('Método global personalizado');
};
}
};
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import myPlugin from './myPlugin'; // Importamos nuestro plugin personalizado
const app = createApp(App);
app.use(myPlugin); // Usamos nuestro plugin personalizado
app.mount('#app');
Uso de Plugins en Vue.js
Creamos un archivo myPlugin.js
que exporta un objeto con un método install
. Este método recibe la instancia de la aplicación y cualquier opción que queramos pasar. Añadimos un método global personalizado app.config.globalProperties.$myMethod
que estará disponible en todos los componentes.
En el archivo main.js
, importamos y usamos nuestro plugin personalizado con app.use(myPlugin)
. Esto hace que el método global $myMethod
esté disponible en todos los componentes de la aplicación.
En el componente App.vue
, añadimos un botón que, al ser clicado, llama al método global personalizado $myMethod
, que simplemente imprime un mensaje en la consola.
main.js
.install
que registre cualquier propiedad, método o funcionalidad global.main.js
para que sus funcionalidades estén disponibles globalmente.