【发布时间】:2020-11-04 19:16:09
【问题描述】:
我对 node 和 express 非常陌生,我阅读了一些文档,但我没有深入了解如何使用 node 创建 rest api,所以使用下面的基本代码我只想创建 get api with express 并返回对 angularjs 的响应工厂方法。我想获得以下帮助和更好的理解。
1- 如何使用 GET api 返回响应?
2- 如果我们有 json 对象,我如何使用 GET api 传递该数据?
app.js
var express = require('express');
var path = require('path');
var app = express();
app.use(express.static('./'));
var server = app.listen(3000, function(){
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http',host,port);
});
app.get('/test', function(req, res) {
res.type('text/plain'); // set content-type
res.send('i am a beautiful butterfly'); // send text response
});
workerController.js
$scope.getTestData = function(){
alert('got function working');
workerFactory.getData().then(function(response){
var dataResponse = response.data;
console.log(dataResponse);
})
}
workerFactory.js
angular.module('myApp').factory('workerFactory', function ($http) {
'use strict';
return {
getData: function(){
return $http.get('/test');
}
}
});
【问题讨论】:
-
res.send()或res.json()是向 REST 请求发送响应的两种典型方式。您似乎已经在app.get()处理程序中这样做了。您还期待或寻找什么? -
当我从前端调用 get endpoint /test 时,我没有看到消息“我是一只美丽的蝴蝶”
-
调用该端点时会得到什么响应?如果您没有收到任何响应,请在您的
getData()调用中添加一个错误处理程序,以便您查看遇到的错误。 -
另外,
app.use(express.static('./'));通常是个坏主意,因为这会让人们看到你所有的服务器源文件,甚至像 https 证书(如果存在)这样的东西。您应该创建一个单独的子目录,其中仅包含公开提供的文件,并将express.static()指向该子目录。