如何在axios get请求中返回值?

时间:2019-12-27 18:15:29

标签: javascript vue.js axios es6-promise vue-router

我正在做一个Vue项目。现在,我正在通过JWT处理身份验证。为此,我正在创建一个模块“ axios.js”,该模块应导入到 main.js 中,以允许令牌验证并因此向用户授予权限。

主要思想是将令牌传递到端点/endpoint,并使其返回状态代码。

我当前的问题是我无法返回状态代码,得到的是Promise,而不是布尔值。

auth.js

import axios from "axios";

var config = {
  headers: { Authorization: "Bearer " + localStorage.getItem("usertoken") }
};

export default async function isAuth() {
  let responseStatus = axios.get("http://localhost:5000/endpoint", config);

  let status = await responseStatus.then(res => {
    if (res.status == 200) {
      return true;
    } else {
      return false;
    }
  });
  return status;
}

main.js 文件的相关部分如下。其余的是导入和路线,在这里可能没有必要。

main.js

import isAuth from "./axios/auth.js";

const router = new VueRouter({
  mode: "history",
  routes
});

router.beforeEach((to, from, next) => {
  // eslint-disable-next-line no-console
  console.log(isAuth());
  var requiresAuth = to.matched.some(record => record.meta.requiresAuth);

  if (requiresAuth && !isAuth()) {
    next("/login");
  } else if (to.path == "/login" && isAuth()) {
    next("/home");
  } else {
    next();
  }
});

在下面的main.js中使用console.log(isAuth())查找打印屏幕:

console log

如果需要更多信息,请告诉我!谢谢。

1 个答案:

答案 0 :(得分:0)

Axios.get已经返回了一个Promise,因此您只需从Author函数中返回authors_who_voted_for。然后,在使用axios.get(...)函数的地方,可以通过执行isAuth

运行isAuth或使用isAuth().then(...) / async

await

此外,请注意,await isAuth();还具有import isAuth from './axios/auth.js' var config = { headers: { 'Authorization': "Bearer " + localStorage.getItem('usertoken') } }; export default async function isAuth() { // Axios.get already returns a promise, so just return Axios.get return axios.get("http://localhost:5000/endpoint", config); } const router = new VueRouter({ mode: 'history', routes }) router.beforeEach((to, from, next) => { // eslint-disable-next-line no-console console.log(isAuth()) // This will just log a Promise. var requiresAuth = to.matched.some(record => record.meta.requiresAuth); isAuth().then(result => { if (result) { // result success } else { // result fail } }); }); // Or, with async/await router.beforeEach(async(to, from, next) => { // eslint-disable-next-line no-console console.log(isAuth()) // This will just log a Promise. var requiresAuth = to.matched.some(record => record.meta.requiresAuth); const isAuthed = await isAuth(); if (isAuthed) { // result success } else { // result fail } });函数用于错误处理。您可能需要添加它,以便处理端点返回的所有异常。