Vue.js 如何使用vuex和axios在共享主机中进行api调用?
我对vue和vuex完全陌生。我的项目在本地运行得很好,但是当我尝试在服务器上运行它时,无论我做了多少尝试,我都无法更改API的请求URL 我明白了Vue.js 如何使用vuex和axios在共享主机中进行api调用?,vue.js,url-rewriting,axios,vuex-modules,Vue.js,Url Rewriting,Axios,Vuex Modules,我对vue和vuex完全陌生。我的项目在本地运行得很好,但是当我尝试在服务器上运行它时,无论我做了多少尝试,我都无法更改API的请求URL 我明白了https://developers.thegraphe.com/api/v1/user/login作为我尝试登录服务器时的请求url,而正确的路由将是https://developers.thegraphe.com/member-directory/api/v1/user/login My.env文件定义了以下内容 APP_URL=https://
https://developers.thegraphe.com/api/v1/user/login
作为我尝试登录服务器时的请求url,而正确的路由将是https://developers.thegraphe.com/member-directory/api/v1/user/login
My.env文件定义了以下内容
APP_URL=https://developers.thegraphe.com/member-directory
BASE_URL=https://developers.thegraphe.com/member-directory
API_URL=https://developers.thegraphe.com/member-directory
我在config/app.php中将我的应用程序url设置为
'url' => env('APP_URL', "https://developers.thegraphe.com/member-directory"),
我正在进行这样的api调用
const state = {
user: {},
errors: {}
};
const getters = {};
const actions = {
getUser({ commit }) {
axios.get("/user/current")
.then(response => {
commit('setUser', response.data);
})
},
loginUser({ commit }, user) {
axios.post("/user/login", {
email: user.email,
password: user.password
})
.then(response => {
if (response.data.access_token) {
//save token
localStorage.setItem("user_token", response.data.access_token)
console.log(response.data);
// window.location.replace("/app");
} else {
commit('setError', response.data.errors);
}
})
},
registerUser({ commit }, user) {
axios.post("/user/register", {
IM_no: user.IM_no,
name: user.name,
dob: user.dob,
phone: user.phone,
email: user.email,
password: user.password,
password_confirmation: user.password_confirmation,
gender: user.gender,
designation: user.designation,
classification: user.classification,
company: user.company,
blood_group: user.blood_group,
})
.then(response => {
if (response.data.access_token) {
//save token
localStorage.setItem("user_token", response.data.access_token)
console.log(response.data);
window.location.replace("/app");
}
else {
commit('setError', response.data.errors);
}
// console.log(response.data.errors);
})
.catch(error => {
console.log(error);
})
},
logoutUser() {
localStorage.removeItem("user_token");
window.location.replace('/login');
},
getUsers() {
axios.get("/user/all");
}
};
const mutations = {
setUser(state, data) {
state.user = data;
},
setError(state, data) {
state.errors = data;
}
};
export default {
namespaced: true,
state,
getters,
actions,
mutations,
}
import axios from 'axios'
export default axios.create({
baseURL: 'http://developers.thegraphe.com/member-directory/api/v1',
timeout: 5000,
})
我的主app.js文件
require('./bootstrap');
window.Vue = require('vue');
import 'material-design-icons-iconfont/dist/material-design-icons.css';
import Vuetify from '../plugins/vuetify';
import axios from "axios";
axios.defaults.baseURL = "https://developers.thegraphe.com/member-directory/api/v1"
Vue.config.productionTip = false;
import store from './store';
import router from './routes';
我还尝试在这样一个单独的文件中使用axios.create
const state = {
user: {},
errors: {}
};
const getters = {};
const actions = {
getUser({ commit }) {
axios.get("/user/current")
.then(response => {
commit('setUser', response.data);
})
},
loginUser({ commit }, user) {
axios.post("/user/login", {
email: user.email,
password: user.password
})
.then(response => {
if (response.data.access_token) {
//save token
localStorage.setItem("user_token", response.data.access_token)
console.log(response.data);
// window.location.replace("/app");
} else {
commit('setError', response.data.errors);
}
})
},
registerUser({ commit }, user) {
axios.post("/user/register", {
IM_no: user.IM_no,
name: user.name,
dob: user.dob,
phone: user.phone,
email: user.email,
password: user.password,
password_confirmation: user.password_confirmation,
gender: user.gender,
designation: user.designation,
classification: user.classification,
company: user.company,
blood_group: user.blood_group,
})
.then(response => {
if (response.data.access_token) {
//save token
localStorage.setItem("user_token", response.data.access_token)
console.log(response.data);
window.location.replace("/app");
}
else {
commit('setError', response.data.errors);
}
// console.log(response.data.errors);
})
.catch(error => {
console.log(error);
})
},
logoutUser() {
localStorage.removeItem("user_token");
window.location.replace('/login');
},
getUsers() {
axios.get("/user/all");
}
};
const mutations = {
setUser(state, data) {
state.user = data;
},
setError(state, data) {
state.errors = data;
}
};
export default {
namespaced: true,
state,
getters,
actions,
mutations,
}
import axios from 'axios'
export default axios.create({
baseURL: 'http://developers.thegraphe.com/member-directory/api/v1',
timeout: 5000,
})
在currentUser.js中这样调用api
import myApi from '../../myApi'
...
myApi.get("/user/current")
我努力编码url值,比如axios.post(“https://developers.thegraphe.com/member-directory/api/v1/user/login/“
但它不起作用
即使我删除了服务器中的currentUser.js文件,单击登录按钮,api也会被调用到错误的url
我也试图清除浏览器缓存,但没有成功
我一直在努力解决这个问题。感谢您的帮助。谢谢