我正在使用nodejs和angularjs。
我将get请求发送到nodejs服务器,并在客户端js的参数中包含所需的数据。
itinerary.js
$http({
method : "GET",
url : '/createItinerary',
data : {
"source" : $scope.sourceDestination.source,
"destination" : $scope.sourceDestination.destination
}
})
我是节点js文件,当我使用req.params(“source”)或req.params(“destination”)时,我的内容未定义。
createIitinerary.js
exports.check = function(req,res){
// These two variables come from the form on
var source = req.param("source");
var dest = req.param("destination");
console.log("source:"+source);
console.log("dest:"+dest);
var json_responses;
if(source == dest){
json_responses = {"statusCode" : 401};
res.send(json_responses)
}
else{
json_responses = {"statusCode" : 200};
res.send(json_responses);
}};
问题:当我使用Post时,数据在nodejs中正确接收,但不在Get中。为什么是这样?如何使用Get request将数据发送到nodejs。
答案 0 :(得分:1)
对于$http.get()
,您设置params
而不是data
尝试:
$http({
method : "GET",
url : '/createItinerary',
params: {
"source" : $scope.sourceDestination.source,
"destination" : $scope.sourceDestination.destination
}
})
应该很容易检查浏览器开发工具网络中使用的URL并确保它看起来正确
答案 1 :(得分:0)
如果您阅读了关于http动词的内容,那么您将会知道如果该方法的类型为 GET ,那么我们就无法在正文中发送数据。
如果请求的类型为GET,我们可以将数据作为查询参数发送 所以你的请求将成为
$http({
method : "GET",
url : '/createItinerary?source=$scope.sourceDestination.source&destination=$scope.sourceDestination.destination
})
您可以在服务器端读取数据
req.query.source
req.query.destination
如果方法类型为 PUT , POST , DELETE ,更新,您可以在正文中发送数据等
结论
永远不会让身体获得要求