休息 API。 AngularJS 快递。错误 500;
REST API. AngularJS to Express. Error 500;
请帮我弄清楚 Express REST 背后的逻辑 API。
我正在将我的自我教育从纯 AngularJS 转移到 MEAN 堆栈,所以请耐心等待。
我有以下 angular 控制器,它从我的联系表单中获取数据并将其放入 formData 对象中。
app.controller('ContactCtrl', ['$scope', '$http', function($scope, $http){
$scope.formData = {};
$scope.submitForm = function() {
console.log($scope.formData);
$http.post('/sendEmail', $scope.formData);
}
}]);
在我的 routes/index.js 文件中,我有以下代码来测试它是否至少可以到达这条路线
router.get('/sendEmail', function(req, res) {
res.send('hello world');
});
当我提交表单时,我从服务器收到错误 500。
http://localhost:3000/sendEmail 500 (Internal Server Error)
谁能告诉我我做错了什么。
我试图为初学者找到一些关于这个主题的文档或教程,但在这一点上我认为我需要一些交互式的人工帮助。谁能解释一下
- 为什么我得到 500 错误,为什么它不只是渲染 "Hello World"
- 如何正确地将 $scope.formData 传递给 Express 以及 res.可能看起来像。
最后一题,是加分题,觉得多的可以忽略,我还是要深入nodemailer文档。
3. 如何使用我们传递给 Express 的这个 $scope.formData 对象,并在此处与 nodemailer API 一起使用它来实际发送电子邮件。
提前谢谢大家!
我真的很想掌握 MEAN,但有时很难把它们放在一起。
我在这里问,因为真的没有 "COMPLETE" 关于联系表格的 MEAN 堆栈教程。也许有人可以做一个。
当你向服务器发送HTTP请求时,你需要声明服务器要执行的动作,称为HTTP request methods。
如果你想获取资源并且不想对服务器有任何副作用,你可以使用'GET'方法。从客户端,你需要在你的请求中添加这个头,幸运的是 Angular 已经为我们包装了所有这些,我们只需要调用 $http.get()
。从服务器端,您需要声明您允许其他人(任何将访问您的服务器的人)访问哪些方法。所以在 Express 中,如果你写下面的代码,
router.get('/sendEmail', function(req, res) {
res.send('hello world');
});
这意味着,您允许用户从您的服务器GET目录'/sendEmail'下的资源。
在您的情况下,您想要将一些数据发送到服务器(您的 Express 应用程序)并可能将其存储在数据库中,您需要在 HEADER 中添加一个 'POST' 方法。您可以在 Angular 应用程序中轻松使用 $http.post('/sendMail', data)...
。
对于快递应用,您需要将路线定义为
router.post('/send mail', ... )
允许其他人post向服务器发送数据。
如果您的客户端代码使用 $http.post()
方法向后端发出 POST
请求,您的服务器必须 listen for POST
要求。您的代码使用 router.get('/sendEmail')
侦听 GET
。所以你必须将你的服务器代码更改为以下内容。
router.post('/sendEmail', function (req, res) {
/* your code */
});
进一步阅读
您可以查看 express.js API how to handle the different HTTP methods. For sending data to your server with AngularJS, please have a look at the corresponding $http
documentation 的文档。
我还可以建议花一些时间阅读有关 REST
的内容,这意味着根据您想要实现的功能,使用特定路径和方法调用服务器上的端点。好的读物是 Best Practices for a Pragmatic Restful API.
请帮我弄清楚 Express REST 背后的逻辑 API。 我正在将我的自我教育从纯 AngularJS 转移到 MEAN 堆栈,所以请耐心等待。
我有以下 angular 控制器,它从我的联系表单中获取数据并将其放入 formData 对象中。
app.controller('ContactCtrl', ['$scope', '$http', function($scope, $http){
$scope.formData = {};
$scope.submitForm = function() {
console.log($scope.formData);
$http.post('/sendEmail', $scope.formData);
}
}]);
在我的 routes/index.js 文件中,我有以下代码来测试它是否至少可以到达这条路线
router.get('/sendEmail', function(req, res) {
res.send('hello world');
});
当我提交表单时,我从服务器收到错误 500。
http://localhost:3000/sendEmail 500 (Internal Server Error)
谁能告诉我我做错了什么。
我试图为初学者找到一些关于这个主题的文档或教程,但在这一点上我认为我需要一些交互式的人工帮助。谁能解释一下
- 为什么我得到 500 错误,为什么它不只是渲染 "Hello World"
- 如何正确地将 $scope.formData 传递给 Express 以及 res.可能看起来像。
最后一题,是加分题,觉得多的可以忽略,我还是要深入nodemailer文档。 3. 如何使用我们传递给 Express 的这个 $scope.formData 对象,并在此处与 nodemailer API 一起使用它来实际发送电子邮件。
提前谢谢大家!
我真的很想掌握 MEAN,但有时很难把它们放在一起。
我在这里问,因为真的没有 "COMPLETE" 关于联系表格的 MEAN 堆栈教程。也许有人可以做一个。
当你向服务器发送HTTP请求时,你需要声明服务器要执行的动作,称为HTTP request methods。
如果你想获取资源并且不想对服务器有任何副作用,你可以使用'GET'方法。从客户端,你需要在你的请求中添加这个头,幸运的是 Angular 已经为我们包装了所有这些,我们只需要调用 $http.get()
。从服务器端,您需要声明您允许其他人(任何将访问您的服务器的人)访问哪些方法。所以在 Express 中,如果你写下面的代码,
router.get('/sendEmail', function(req, res) {
res.send('hello world');
});
这意味着,您允许用户从您的服务器GET目录'/sendEmail'下的资源。
在您的情况下,您想要将一些数据发送到服务器(您的 Express 应用程序)并可能将其存储在数据库中,您需要在 HEADER 中添加一个 'POST' 方法。您可以在 Angular 应用程序中轻松使用 $http.post('/sendMail', data)...
。
对于快递应用,您需要将路线定义为
router.post('/send mail', ... )
允许其他人post向服务器发送数据。
如果您的客户端代码使用 $http.post()
方法向后端发出 POST
请求,您的服务器必须 listen for POST
要求。您的代码使用 router.get('/sendEmail')
侦听 GET
。所以你必须将你的服务器代码更改为以下内容。
router.post('/sendEmail', function (req, res) {
/* your code */
});
进一步阅读
您可以查看 express.js API how to handle the different HTTP methods. For sending data to your server with AngularJS, please have a look at the corresponding $http
documentation 的文档。
我还可以建议花一些时间阅读有关 REST
的内容,这意味着根据您想要实现的功能,使用特定路径和方法调用服务器上的端点。好的读物是 Best Practices for a Pragmatic Restful API.