Expressサブアプリケーションを2つ設定しました。 1つはバックエンドAPIを提供し、もう1つは私の反応である「単一ページアプリケーション」に役立ちます。両方のAppsはメインアプリにマウントされます。着信要求がJSONを受け入れる場合にのみ、apiServerサブアプリケーションにリクエストを送信したいと思います。JSONを受け付けないリクエストに対してエクスプレスサブアプリケーションをスキップする方法
これまで私がこれまで持っていたことは次のとおりです。
const express = require('express');
// two express sub apps
const reactServer = require('./reactServer');
const apiServer = require('./apiServer')
const app = express();
// middelware to check for json
const onlyJSON = (req, res, next)=>{
if(req.headers.accept.indexOf('json') === -1){
next('route') // this doesn't appear to work
}else{
next()
}
}
app.use('/api', onlyJSON, apiServer);
app.use('/', reactServer);
app.listen(3000);
これは機能しません。ブラウザからのリクエストは、依然としてapiServerによって処理されます。アイデアは、それらがreactServerに流れるべきだということです。これは何かできるのでしょうか?
これは動作するようです。私はサブルータでフルパスを使用する必要があります。 'router.get(/ api/test)'のようなものです。 'app.use()'は 'router.get(api/test)'だけを使用します。しかし、私はそれを得る。これは本当に「ルート固有のミドルウェア」に似ています。だから 'next( 'route')が動作します。 – toddgeist