У меня есть две настройки приложений для экспресс-приложений. Один из них будет служить API-интерфейсу, а другой будет обслуживать мое однопользовательское приложение. Оба приложения затем устанавливаются в главном приложении. Я хотел бы только отправлять запросы к приложению apiServer, если входящий запрос принимает JSON.Как пропустить экспресс-приложение для запросов, которые не принимают 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. Идея состоит в том, что они должны перетекать в реакционный сервер. Это что-то, что можно сделать?
Это похоже на работу. Хотя я должен использовать полные пути в суб маршрутизаторах. например, 'router.get (/ api/test)'. В то время как 'app.use()' позволит мне просто использовать 'router.get (api/test)'. Но я понял. Теперь это больше похоже на «специфическое для маршрута». поэтому 'next ('route') работает. – toddgeist