我的应用是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。
有没有办法解决这个问题?
谢谢。答案 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')
})
请注意:
/*
路由在api之后,以便所有与之前路径不匹配的路由呈现您的SPA页面*
,因此当您路由到/user
时,它会呈现SPA页面,然后在客户端上呈现user
页面api
前缀,用于区分您的api和SPA路径