2017-03-10 7 views
0

私は追いかけていくつもりだ。だから、私の反応(redux)アプリから私のサーバにGETリクエストをしようとしている。私の知る限り見ることができるように、私は正しく私の特急サーバー(私のサーバーの多くは、サーバー側のレンダリング用に最適化されている)Express Server - GETリクエストは404(Not Found)を返す

ここでは、ここに私の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 
       }) 
      }) 
    } 
} 

は私であるセットアップをしましたエクスプレスサーバー

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要求を行うと、それは私のクライアント側のコンソールでこれを返します

私はオンライン検索したと私の問題への解決策を見つけることができない、私にGETリクエストが右に見える、多分私は私の特急サーバーを設定していませんでしたhttp://localhost:3000/api/articles 404(見つかりません)

をGET正しく?

ご協力いただきありがとうございます、ありがとうございます!

答えて

2

他のルートをすべて一覧表示した後、常に'*'ルートを配置します。

app.get('/api/articles', function() {}); 
app.get('*', middleware); 
+0

にミドルウェアを追加したい場合は、受け付けます! –

+0

私が言っているのは、 '*'はすべてのルートにマッチしているため、 '/ api/article'を押すと、次のルートの 'appではなく' app.get( '*'、ミドルウェア); get( '/ api/article'、ミドルウェア); '。それに応じてルートを発注する必要があります。 – Vikramaditya

0

あなたが変更する必要があります。

app.get('*', middleware); 

app.use(middleware); 

にあなたはそれがすべてのルートをキャッチします先頭に '*' をルーティング作成するとき。すべてのリクエストにミドルウェアを追加する場合は、app.useを使用してください。

あなたははるかに高く評価唯一の要求

app.get('/route', middleware1, middleware2, (req, res) => { 
    res.send('route with middlewares'); 
}) 
関連する問題