Я пытаюсь прокси-запросы API от сервера Angular Universal Express, используя http-proxy-middleware.Но переписывание происходит после моего вызова API.
Мне нужно динамически загружать данные при загрузке представлений SSR.Но мой API находится на другом сервере, поэтому мне нужно использовать прокси.Я искал решение и нашел тот, который использует http-proxy-middleware, к сожалению, когда я применяю прокси в server.ts, пути конфигурации переписываются после того, как api уже был вызван.
// These are important and needed before anything else
import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import * as express from 'express';
import * as path from 'path';
import { ngExpressEngine } from '@nguniversal/express-engine';
import { AppServerModuleNgFactory } from './dist/frontend-server/main';
import * as proxy from 'http-proxy-middleware'
const distFolder = path.join(process.cwd(), 'dist', 'frontend');
const MockBrowser = require('mock-browser').mocks.MockBrowser;
const mock = new MockBrowser();
//Angular broking universal stuff
global['navigator'] = mock.getNavigator();
global['document'] = mock.getDocument();
global['window'] = mock.getWindow();
global['location'] = mock.getLocation();
global['history'] = mock.getHistory();
global['localStorage'] = mock.getLocalStorage();
global['sessionStorage'] = mock.getSessionStorage();
Object.defineProperty(document.body.style, 'transform', {
value: () => {
return {
enumerable: true,
configurable: true
};
},
});
//Engine
const app = express();
app.set('view engine', 'html');
app.set('views', distFolder);
app.engine('html', ngExpressEngine({
bootstrap: AppServerModuleNgFactory
}));
//Proxy
var options = {
target: 'http://localhost:8080', // target host
pathRewrite: {
'^/api': ''
},
logLevel: 'debug',
};
var apiProxy = proxy(options);
app.use('/api',apiProxy);
//Routes
app.get('*.*', express.static(distFolder));
app.get('*', (req, res) => {
res.render('index', { req });
});
app.listen(4200, () => console.log('Running on http://localhost:4200'));
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
data
[Error]
[Error]
[Error]
[HPM] Rewriting path from "/api/public/offer" to "/public/offer"
[HPM] GET /api/public/offer ~> http://localhost:8080
'data '- это момент начала моей подписки.[Ошибка], вероятно, неправильные вызовы API.А потом я получаю прокси.
Я бы хотел, чтобы все мои запросы API были прокси перед вызовом API.