Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我在node.js express中遇到了一些路由问题_Javascript_Node.js_Reactjs_Express_Single Page Application - Fatal编程技术网

Javascript 我在node.js express中遇到了一些路由问题

Javascript 我在node.js express中遇到了一些路由问题,javascript,node.js,reactjs,express,single-page-application,Javascript,Node.js,Reactjs,Express,Single Page Application,我的应用程序正在使用react 我正在尝试在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(__dirna

我的应用程序正在使用react

我正在尝试在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(react)

服务器代码中只有一个“sendFile”

其余的都是API,它返回JSON

所以我只想使用API来获取或ajax方式

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

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

有没有办法解决这个问题


谢谢。

要使用SPA路由方式,您需要将页面URL和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页面
  • 您需要在SPA url模式中使用
    *
    ,因此当您路由到
    /user
    时,它会呈现SPA页面,然后在客户端呈现
    用户
    页面
  • api
    前缀,用于区分api和SPA路径

  • 交换get to a post,稍微更改url,然后将get to a重定向回spa