So I am trying to make a CRUD page for my first Vue project, but I keep getting errors and can't quite find a good solution or example that works.
When I post this request via postman:
I get results from my database as aspected, but when I try to do this from my vue page I can't seem to get it right. I keep getting a 401 unauthorized error, but I think I do have a header with the token in it.
My vue page:
<template> <div class="list row"> <div class="col-md-8"> </div> <div class="col-md-6"> <h4>Parties List</h4> <ul class="list-group"> <li class="list-group-item" :class="{ active: index == currentIndex }" v-for="(party, index) in parties" :key="index" @click="setActiveParty(party, index)" > {{ party.name }} </li> </ul> <button class="m-3 btn btn-sm btn-danger" @click="removeAllParties"> Remove All </button> </div> <div class="col-md-6"> <div v-if="currentParty"> <h4>Party</h4> <div> <label><strong>Title:</strong></label> {{ currentParty.name }} </div> <div> <label><strong>Description:</strong></label> {{ currentParty.description }} </div> <div> <label><strong>Is party national:</strong></label> {{ currentParty.ispartynational ? "Yes" : "No" }} </div> <div> <label><strong>partyLeader:</strong></label> {{ currentParty.partyLeader.name}} </div> <a class="badge badge-warning" :href="'/parties/' + currentParty.id" > Edit </a> </div> <div v-else> <br /> <p>Please click on a Party...</p> </div> </div> </div> </template> <script> import PartyDataService from "@/services/PartyDataService"; export default { name: "PartiesList", data() { return { parties: [], currentParty: null, currentIndex: -1, name: "" }; }, methods: { retrieveParties() { PartyDataService.getAll() .then(response => { this.parties = response.data; console.log(response.data); }) .catch(e => { console.log(e); }); }, refreshList() { this.retrieveParties(); this.currentParty = null; this.currentIndex = -1; }, setActiveParty(party, index) { this.currentParty = party; this.currentIndex = index; }, removeAllParties() { PartyDataService.deleteAll() .then(response => { console.log(response.data); this.refreshList(); }) .catch(e => { console.log(e); }); }, searchName() { PartyDataService.findByName(this.name) .then(response => { this.tutorials = response.data; console.log(response.data); }) .catch(e => { console.log(e); }); } }, mounted() { this.retrieveParties(); } }; </script> <style> .list { text-align: left; max-width: 750px; margin: auto; } </style> My PartyDataService:
import http from "../http-common"; class PartyDataService { getAll() { return http.get("/parties"); } get(id) { return http.get(`/parties/${id}`); } create(data) { return http.post("/parties/", data); } update(id, data) { return http.put(`/parties/${id}`, data); } delete(id) { return http.delete(`/parties/${id}`); } deleteAll() { return http.delete(`/parties`); } findByName(name){ return http.get(`/parties/${name}`) } } export default new PartyDataService(); My Http-common:
import axios from "axios"; export default axios.create({ baseURL: "http://localhost:8080/", headers: { "Content-type": "application/json" } }); I tried to do this in the http-common.js file:
import axios from "axios"; export default axios.create({ baseURL: "http://localhost:8080/", headers: { Authorization: 'Bearer ' + localStorage.getItem('Authorization'), "Content-type": "application/json" } }); But that gave me the same error plus an extra cors error, that I do not have when I don't include that line of code.
I do not know where to put the line of code (that I think will help me solve my problem). Can anyone help me? Thanks in advance!
