我在node.js express中有一些关于路由的问题

时间:2018-05-14 08:46:33

标签: javascript node.js reactjs express single-page-application

我的应用是SPA使用反应

我正在尝试使用node.js中的express构建API

所以我的服务器代码是

const express = require('express');
const app = express();

const PORT = 80;
app.listen(PORT, () => {
    console.log('connected')
}}

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/public/index.html')
})

//api
app.get('/user', .....
   res.json(~~~)
app.post('/user', .........
   res.json(~~~~)

因为我的客户是spa(反应),

只有一个' sendFile'在服务器代码中。

所有其余的都是API,它返回JSON。

所以我想仅使用关于fetch或ajax方式的API

但是,目前的情况是,如果客户端直接访问api url,

浏览器可以看到json而不是我的spa。

有没有办法解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

要使用SPA路由方式,您需要分隔网页和api url网址:

const express = require('express');
const app = express();

const PORT = 80;
app.listen(PORT, () => {
    console.log('connected')
}}

//api
app.get('/api/user', .....
   res.json(~~~)
app.post('/api/user', .........
   res.json(~~~~)

app.get('/*', (req, res) => {
   res.sendFile(__dirname + '/public/index.html')
})

请注意:

  1. /*路由在api之后,以便所有与之前路径不匹配的路由呈现您的SPA页面
  2. 您需要在SPA网址格式中使用*,因此当您路由到/user时,它会呈现SPA页面,然后在客户端上呈现user页面
  3. api前缀,用于区分您的api和SPA路径