req.body 未定义并使用 Angular 进行快速 API 测试
Posted
技术标签:
【中文标题】req.body 未定义并使用 Angular 进行快速 API 测试【英文标题】:req.body undefined and express api testing using angular 【发布时间】:2016-02-25 06:52:50 【问题描述】:我正在练习 API 并遇到一个小问题。有人可以看看下面的代码,让我知道为什么当我在客户端使用 angular $http 进行 POST 请求时 req.body 记录未定义?还可以尝试一个简单的 jquery AJAX 请求来获得相同的结果。
//------------------ back-end
var express = require('express');
var mongoose = require('mongoose');
var app = express();
//connect DB
var mongoURI = process.env.MONGOLAB_URI || 'mongodb://localhost/Ecomm_db';
mongoose.connect(mongoURI);
//express config
app.use(express.static(__dirname + '/public'));
//DB setup
var Schema = mongoose.Schema;
var Product = new Schema(
title: type: String, required: true ,
description: type: String, required: true ,
style: type: String, unique: true ,
modified: type: Date, default: Date.now
);
var ProductModel = mongoose.model('Product', Product);
//API
app.post('/api/products', function (req, res)
var product;
console.log("POST: ");
console.log(req.body);
product = new ProductModel(
title: req.body.title,
description: req.body.description,
style: req.body.style,
);
product.save(function (err)
if (!err)
return console.log("created");
else
return console.log(err);
);
return res.send(product);
);
//--------------------------- client-end
$http(
method: 'POST',
url: '/api/products',
data:
title: "my t-shirts",
description: "super good",
style: "my style"
).then(function (response)
console.log('POST response',response);
, function (err)
console.log('err:', err);
)
【问题讨论】:
【参考方案1】:尝试使用模块'body-parser'
var bodyParser = require('body-parser');
...
app.use(bodyParser.urlencoded( extended: false ));
app.use(bodyParser.json());
【讨论】:
哦,海伦。你是拯救者。它修复了它。 @jhlosin 很高兴为您提供帮助以上是关于req.body 未定义并使用 Angular 进行快速 API 测试的主要内容,如果未能解决你的问题,请参考以下文章
Node.js(Express API):req.body.myobject 未定义且无法正常工作
auth 中间件 req.body.authorization 'split' 未定义