【问题标题】:Post request in VueJs with undefined response在 VueJs 中发布带有未定义响应的请求
【发布时间】:2017-11-13 17:18:43
【问题描述】:

我是 VueJs 和 Expressjs 的初学者。我试图用 Vuejs 做前端,用 ExpressJs 做后端。我向后端(expressJs)发送一个发布请求,然后:

1- 响应未定义 2-同时我可以在chrome开发工具中看到2个请求。一个是 Option,另一个是 Post。 3- 使用邮递员完全没有问题。

这里是express中app.js的代码

console.log('Server is running')

const express = require('express'),
    bodyParser = require('body-parser'),
    cors = require('cors'),
    morgan = require('morgan');

app = new express();

//Setup middleware
app.use(cors());
app.use(morgan('combined'))
app.use(bodyParser.json())

app.post('/register', (req, res, next) => {
    res.send({
        message: `Hello ${req.body.email}! your user was registered!`
    })
});

app.listen(8081);

这是 VueJs 中的代码:

// Api Setting

import axios from 'axios'

export const HTTP = axios.create({
    baseURL: `http://localhost:8081`
  });



// AuthenticationService

import { HTTP } from '../services/Api'

export default {

  register(credentials) {
     HTTP.post('register', credentials);
  }
}



// Register Component 
export default {
  data() {
    return {
      email: '',
      password: ''
    };
  },
  methods: {
   
   async register() {
        const response = await AuthenticationService.register({
        email: this.email,
        password: this.password
      });

      console.log(response);  // the value is undefined
    }
  }
};

我真的不知道我在这里错过了什么,我同时收到一个未定义的响应和 2 个请求。我很感激任何提示。

github repo 上的完整代码:here

【问题讨论】:

    标签: javascript node.js express vue.js


    【解决方案1】:

    也许吧。 Authentication.register 没有返回任何内容,或者更具体地说是 Promise,它应该用于在 await 调用中填充 const response

    尝试返回类似这样的内容:return HTTP.post('register', credentials);register

    但要使其正常工作,HTTP.post('register', credentials) 也应该返回一些内容。

    【讨论】:

    • 感谢您的帮助。你知道为什么我们必须请求(选项,发布)吗?正常吗?
    【解决方案2】:

    我使用 JSON.stringify 发送数据,你是直接发送对象,所以

    register(credentials) {
        HTTP.post('register', credentials);
    }
    

    变成

    register(credentials) {
        HTTP.post('register', JSON.stringify(credentials));
    }
    

    【讨论】:

    • 另外,我还没有 baseurl 部分...不知道这是否有任何影响。我的代码就像axios.post('http://example.com/bla',JSON.stringify(data)).then(
    • 关于您关于发布/和选项的问题...通常,我会说 axios 不会发送任何内容,除非您对其进行编码。但是,可能有一些默认设置需要在发布帖子之前发送一个选项。查看开发工具中的请求正文并查看正文中的选项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2020-05-12
    • 2020-07-03
    相关资源
    最近更新 更多