我正在尝试使用Axion将来自vue应用程序的表单发送到节点服务器。 但是在服务器端的请求中我什么也没得到。 我在vue中有用户名和密码,但无法将其发送到服务器进行处理,而且我可以通过x-www-form-urlencoded类型的Postman得到响应,并看到服务器正常工作。 我尝试更改'Content-Type'的类型,但是
仍然没有任何内容服务器端。
服务器:
router.options('/login',function(request, response, next) {
console.log(request.body);
var login = methods.login(request.body.nationalID, request.body.password)
.then((result) => {
response.status(200).send({
success: true,
roles: result.roles,
token: result.token
})
}).catch((err) => {
response.status(err.code).send({
success: false,
message: err.message
})
})
});
router.post('/login',function(request, response, next) {
console.log(request.body);
var login = methods.login(request.body.nationalID, request.body.password)
.then((result) => {
response.status(200).send({
success: true,
roles: result.roles,
token: result.token
})
}).catch((err) => {
response.status(err.code).send({
success: false,
message: err.message
})
})
});
和服务器配置:
app.use(bodyParser.json()); // <--- Here
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
客户端:
const requestOptions = {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({nationalID:username, password:password})
};
return axios.post('http://127.0.0.1:3000/user/login', requestOptions)
.then(handleResponse)
.then(user => {
// login successful if there's a jwt token in the response
if (user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('user', JSON.stringify(user));
}
return user;
});
答案 0 :(得分:1)
您正在处理请求选项。
x-www-form-urlencoded
内容类型是axios.post()
(以及实际上存在的所有其他HTTP库)的默认类型,并且不需要JSON.stringify()
。毕竟,您不想将JSON发送到服务器,而是要使用表单编码的数据。
只需直接发布对象:
return axios.post('http://127.0.0.1:3000/user/login', {
nationalID: username,
password: password
})
.then( ... )