我正在尝试使用request
模块向我的API发送POST请求,但是我什么也没收到,当我控制台记录请求数据时,我看到字段未定义,如下图所示。不知道为什么。
我试图解决问题,但没有成功。我不知道怎么了但是,当我尝试通过POSTMAN将数据发送到相同的API时,效果很好,如下图所示。所以我不知道为什么从我的应用程序前端发送数据时它不起作用
我需要帮助来说明这一点。
这是我的服务器端代码
let express = require('express'),
bodyParser = require('body-parser'),
request = require('request'),
//connect = require('connect'),
jobRoutes = require('./routes/jobs'), //ddd
// db = require('./models/app'), //ddd
// helpers = require('./helpers/jobs'),
// fetch = require("node-fetch"),
path = require('path'),
router = express.Router(),
app = express(),
port = process.env.PORT || 3000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('public'));
app.use(express.static(path.join(__dirname + '/public')));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use('/api/jobs', jobRoutes);
app.post('/jobs', (req, res)=>{
let formBody = {
title: req.title,
category: req.body.category,
description: req.body.description,
type: req.body.type,
url: req.body.url,
email: req.body.email,
apply: req.body.apply,
location: req.body.location,
company: req.body.company,
createdAt: Date.now()
};
request.post(console.log(formBody),{url:'http://localhost:3000/api/jobs/', form: formBody
}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}else{
console.log('Upload successful! Server responded with:', body);
}
return res.redirect('/jobs')
});
})
app.listen(port, process.env.PORT, process.env.IP, ()=> console.log(`Server is running on ${port}`))
这是接收端服务器代码的样子
let db = require ('../models/app');
exports.createJob = (req, res) => {
console.log('The req body:',req.body)
db.Job.create(req.body)
.then((newJob) => {
res.status(201).json(newJob)
})
.catch((err) => {
res.send(err)
})
}
您可以签出当前的repo以获得更多的清晰度
答案 0 :(得分:1)
但是当我尝试通过POSTMAN将数据发送到相同的API时,如下图所示,它工作正常。
该图像显示来自Postman的请求的Content-Type将为application/json
,但是使用request
模块的代码将发送一个Content-Type为application/x-www-form-urlencoded
的邮件。
大概(您的“接收端服务器代码”未显示bodyParser),您的服务器仅支持JSON格式的请求。
将服务器配置为支持application/x-www-form-urlencoded
或使请求发送JSON。