Node.js:使用app.use& app.get在一起

时间:2016-06-02 14:23:01

标签: javascript node.js

我的节点服务器对应用程序进行了反应。我想除了渲染我的反应应用程序,调用我的服务器作为API来接收一些数据。

怎么可能这样做?

这是我的节点服务器:

....

app.use('/', express.static(path.join(__dirname, '../client/')), function(res, eq) {
});

app.get('/api/state', function (req, res) {
   ...
   res.end(state); // return a JSON
});

当我想用axios加载数据时,我无法访问网址' / api / state'来自我的客户。确实,我的路线由我的客户和路线“api / state”处理。不存在。

我尝试了这个解决方案:

app.get('/', function (req, res) {
  res.redirect('/index');
});

app.use('/index', express.static(path.join(__dirname, '../client/')), function(res, eq) {
});

app.get('/api/state', function (req, res) {
   ...
   res.end(state); // return a JSON
});

它有效,但我的应用程序有时会做出奇怪的反应。 是否有其他解决方案可以做到这一点?

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

我完全不了解你的问题,但我想我理解你的主要问题。

来自客户端的代码(包括客户端路由等)都将由React处理,无论您在静态文件中呈现什么。我不能完全确定您的意思和我的app.use我无法访问网址' / api / state'。",但是这种应用程序的基本模式是在您所描述的服务器上定义所有JSON路由,然后使用来自客户端的ajax请求来获取该数据并在任何客户端框架中呈现它(反应,角度等) ) 你要的那个。

通常,您会看到人们通过在return redirect(url_for('index')) 前加上/api来定义这些数据路由。

据我所知,你的app.use不应该有回调,你应该这样做

app.use('/', express.static(path.join(__dirname, '../client/'));