我会切入追逐......所以我正在尝试从我的react(redux)应用程序向我的服务器发出GET请求。据我所知,我已正确设置我的快速服务器(我的很多服务器都针对服务器端渲染进行了优化)
这是我的redux行动
import axios from "axios";
export function fetchTweets() {
return function(dispatch) {
dispatch({
type: "FETCH_TWEETS"
})
axios.get("/api/articles")
.then((response) => {
dispatch({
type: "FETCH_TWEETS_FULFILLED",
payload: response.data
})
})
.catch((err) => {
dispatch({
type: "FETCH_TWEETS_REJECTED",
payload: err
})
})
}
}
这是我的Express服务器
import path from 'path';
import express from 'express';
import webpack from 'webpack';
import middleware from './src/middleware';
const app = express();
//------------------------
if (process.env.NODE_ENV === 'development') {
const config = require('./webpack.config.dev');
const compiler = webpack(config);
app.use(require('webpack-dev-middleware')(compiler, {
noInfo: true,
publicPath: config.output.publicPath,
stats: {
assets: false,
colors: true,
version: false,
hash: false,
timings: false,
chunks: false,
chunkModules: false
}
}));
app.use(require('webpack-hot-middleware')(compiler));
app.use(express.static(path.resolve(__dirname, 'src')));
} else if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.resolve(__dirname, 'dist')));
}
app.get('*', middleware);
//---------------------------
//connect to mongo db
var db
const MongoClient = require('mongodb').MongoClient
MongoClient.connect('mongodb://###:###@ds123930.mlab.com:23930/halftimefront', (err, database) => {
if (err) return console.log(err);
db = database
console.log('db connected');
})
app.get('/api/articles', (req, res) => {
console.log("test");
var articles = [];
//var articles2 = [];
db.collection('articles').find().toArray().then(result => {
articles = articles.concat(result);
}).then(() => {
console.log(articles);
res.send(articles);
}).catch(e => {
console.error(e);
});
});
app.listen(3000, '0.0.0.0', (err) => {
if (err) {
console.error(err);
} else {
console.info('Listening at http://localhost:3000');
}
});
当我从我的redux操作发出GET请求时,它会在我的客户端控制台中返回
获取http://localhost:3000/api/articles 404(未找到)
我在网上搜索过,无法找到问题的解决方案,对我来说,GET请求看起来是正确的,也许我没有正确设置我的快速服务器?
感谢任何帮助或建议,提前谢谢!
答案 0 :(得分:2)
列出所有其他路线后,始终放置'*'
路线。
app.get('/api/articles', function() {});
app.get('*', middleware);
答案 1 :(得分:0)
你应该改变:
app.get('*', middleware);
到
app.use(middleware);
当您在开头创建路由'*'时,它将捕获所有路由。如果要为所有请求添加中间件,则应使用app.use
。
如果您只想将中间件添加到一个请求
app.get('/route', middleware1, middleware2, (req, res) => {
res.send('route with middlewares');
})