将angular2-webpack-starter与NodeJS API REST集成

我想学习angular2 webpack materlias2节点…等…我开始使用和修改这个样板: angular2-webpack-starter

现在我还想学习nodejs作为Web服务器(使用快速框架或任何你build议的,一个MySQL的ORM等)。

我的问题是:现在我已经创build了我的示例项目(来自angular2-webpack-starter),我已经创build了一个傻瓜ajax调用,我怎样才能将我的项目与用NodeJS写的API REST集成? 你能提供一个简单的例子代码? 另外,从angular2-webpack-starter样板开始,哪里可以放置所有API rest服务器代码?

任何其他build议将不胜感激

非常感谢你

这是一个很好的问题。 没有一个简单的答案,但是我有一个节点js应用程序,里面我有一个客户端文件夹,我克隆到Angular-webpack-starter,它的工作原理是完美的。 我的star牙是:

/client /models /node_module /routes /views server.js packages.json 

在路线里面,你应该把你所有的api端点。

server.js包含:

 var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var index = require('./routes/index'); var api = require('./routes/api'); var test = require('./routes/api'); var users = require('./routes/users'); var expressValidator = require('express-validator'); var app = express(); var port = process.env.PORT || 3003; var proto = process.env.PROTO || "http"; var host = process.env.HOST || "localhost"; //view engine app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.engine('html', require('ejs').renderFile); //static app.use(express.static(path.join(__dirname, 'client'))); //body parser and validator app.use(bodyParser.json({limit: '50mb'})); app.use(bodyParser.urlencoded({limit: '50mb', extended: true})); app.use(expressValidator()); app.use(cookieParser()); app.use('/', index); app.use('/api', api); app.use('/users', users); app.use('/test', test); var server = app.listen(port, host, function(){ console.log('app listening at port:' + port); }); 

和api.js是:

 var express = require('express'); var router = express.Router(); var fs = require('fs'); var path = require('path'); router.get('/analytics', function(req, res) { res.json({ 'response':'1', 'body':'I just remember something, something important..." }); }); module.exports = router; 

一些重要的注意事项:
1.为了testingenv,你需要运行服务器(nodejs)和客户端(angular – 使用webpack),所以为了做到这一点,你需要在你的根目录下运行npm start,在你的客户端运行npm start。 之后,2个服务器运行在端口3000和3003端口之一。所以你所需要做的就是在3000(客户端configuration为你的)客户端服务器,并看到你的应用程序。
2.如果你问自己,那么如果你的服务器不在同一个端口(这是个好问题),你怎么能把http发送给你的服务器 – 你所要做的就是使用webpack把你的请求代理到正确的地方,添加这个给webpack.dev.js:

  devServer: { port: METADATA.port, host: METADATA.host, historyApiFallback: true, watchOptions: { aggregateTimeout: 300, poll: 1000 }, proxy: { '/users/login': { target: 'http://localhost:3003' }, '/users/register': { target: 'http://localhost:3003' }, '/users/forgot-password': { target: 'http://localhost:3003' }, '/users/reset': { target: 'http://localhost:3003' }, '/users/confirm': { target: 'http://localhost:3003' }, '/api/getUserProfile': { target: 'http://localhost:3003' }, '/api/postEditableUserProfile': { target: 'http://localhost:3003' }, '/api/upload-avatar': { target: 'http://localhost:3003' }, '/api/analytics': { target: 'http://localhost:3003' }, '/api/contact': { target: 'http://localhost:3003' } } },