node.js express没有收到请求
我正在使用快速Web框架,并尝试从angularjs发出$ http请求。 我传递数据请求从客户端,但服务器没有收到请求由于某些未知的原因。 请帮忙。
server.js
var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); var io = require('socket.io')(server); var path = require('path'); var fs = require('fs'); app.use(express.static(path.join(__dirname, 'public'))); app.post('/readTfile',function (req,res) { console.log('i received a request'); console.log(req.body); }); server.listen(3000);
和有angular度的HTML
<html> <head> <title>File tream 2</title> <script type="text/javascript" src="javascripts/angular.js"></script> </head> <body> <h2>File tream 2 AngularJS</h2> <div ng-app = "mainApp"> <div id="readfile" ng-controller = "Ctrl1"> <div>{{myfiledata}}</div> </br></br> </div> </div> </body> <script> var mainApp = angular.module("mainApp",[]) mainApp.controller('Ctrl1', function ($scope, $http) { var filename = 'D:\\myapp\\public\\test.txt'; var obj = {"filename" : filename}; $scope.myfiledata = 'result'; $http({ url: '/readTfile', method: "POST", data: JSON.stringify(obj), //timeout: canceller.promise, headers: {'Content-Type': 'application/json','charset' : 'utf-8'} }).success(function(result) { console.log(result); $scope.myfiledata = 'result'; }).error(function(data, status) { console.log(data); }); }); </script> </html>
在控制台上我没有定义req.body
我收到了一个请求
未定义
请帮我解决这个问题。
您将需要中间件从传入stream中读取POST请求的主体,并将其从JSONparsing为一个Javascript对象。 它不会自动结束req.body
。 一个简单的JSON体的通常中间件就是使用body-parser中间件 。
const bodyParser = require('body-parser'); // other stuff here // read and parse application/json app.use(bodyParser.json()); app.post('/readTfile',function (req,res) { console.log('i received a request'); console.log(req.body); });
而且,为了使这个中间件工作,并自动识别您发送的JSON,您将不得不确保post设置了正确的内容types。