我的节点服务器对应用程序进行了反应。我想除了渲染我的反应应用程序,调用我的服务器作为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
});
它有效,但我的应用程序有时会做出奇怪的反应。 是否有其他解决方案可以做到这一点?
感谢您的回答。
答案 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/'));