Llamadas a servicios REST

Para hacer las llamadas al backend utilizaremos el paquete Axios. En nuestro proyecto tendremos una carpeta services con los archivos JavaScript que contengan los servicios. Un ejemplo podría ser el siguiente. Nos definimos un archivo endpoints.js para tener las URLs a las que se llamarán. Como cuando despleguemos nuestra aplicación tanto backend como frontend estarán bajo la misma ruta base, podemos indicar que si no tenemos parametrizado un endpoint local, se coja la ruta base:

const ENDPOINT_ROUTE = '/rest/v1.0/private';
export const ENDPOINT = (typeof(process.env.VUE_APP_BACKEND) != "undefined" ? process.env.VUE_APP_BACKEND : window.location.origin) + ENDPOINT_ROUTE;

Para el endpoint local, podemos ver cómo parametrizarlo en la wiki de Parametrización en Vue.

Una vez hecho esto, podemos definirnos nuestras llamadas a un servicio REST en otro archivo .js, de esta forma:

import axios from "axios";
import { ENDPOINT } from "./endpoints";
 
export default {
  getExpediente(dni) { 
    return axios.get("/expediente?dni=" + dni);
  },
  getOtrasCosas() {
    return axios.get("/otrascosas");
  }
}

El objeto que se obtiene como respuesta tiene los siguientes campos:

Con esto podemos comprobar que la la petición y la respuesta han sido correctas, y obtener los datos solicitados.

Para utilizarlo en nuestros componentes, sólo tendremos que importarlo para poder hacer las llamadas:

Posteriormente, en nuestros componentes, tendremos que definirnos nuestro servicio e inicializarlo. Al hacer las peticiones, debemos tener en cuenta que las peticiones se realizan de forma asíncrona, es decir, se lanzará la petición y seguirá ejecutando el código aunque no se haya recibido la respuesta. El código que deseamos que se ejecute como reacción a la respuesta tendrá que ir en .then(...), de la siguiente manera:

import ServicioRest from "@/services/ServicioRest.js";

export default {
  ...
  methods: {
    método() {
      ServicioRest.getExpediente(this.dni).then((response) => {
		...
      });
    }
  }
}

El objeto que obtenemos al hacer las llamadas con Axios al servicio REST es de tipo Promise, que podemos ver cómo funciona y cómo tratarlos aquí: Funciones asíncronas en JavaScript: Promises y Async/Await