Я пытаюсь настроить BrowserSync для работы в режиме сервера и проксировать мои запросы API на сервер, который работает на одной машине на другом порту, используя http-proxy-middleware. Я использую Gulp для запуска BrowserSync.http-proxy-middleware не пересылает полный путь
BrowserSync работает на порту 8081. работает мой бэкенд на 8080.
Вот как я создаю прокси промежуточное программное обеспечение:
var proxyApi = proxy('/api', {target : 'http://localhost:8080/api', logLevel : 'debug'});
А вот как я бегу BrowserSync из моей Глоток задачи:
// Init BrowserSync with proxies as middleware and based on the dest dir
browserSync.init({
open: true,
port: config.proxyPort,
server: {
baseDir: config.destDir,
middleware: [proxyApi]
},
browser: "google chrome"
});
выход:
[HPM] Proxy created: /api -> http://localhost:8080/api
Все выглядит хорошо.
Но когда я попал, например. http://localhost:8081/api/users
, выход:
[HPM] GET /api/users/123 -> http://localhost:8080/api
... И мой клиент получает 404 ошибку, потому что /api
самих по себе ничего на внутреннем интерфейсе не совпадает.
Из того, что я понял из док и примеров, цель должна быть на самом деле http://localhost:8080/api/users/123
Почему остальная часть пути (в данном случае /users/123
) быть исключенным?
Используя следующие версии:
"gulp": "3.9.1",
"browser-sync": "2.16.0",
"http-proxy-middleware": "0.17.1",
Спасибо за указатель и решения. Второй работает хорошо для меня, так как я хочу проксировать определенные маршруты, а не весь сервер. Я должен сказать, что имя параметра «prependPath» не очень интуитивно для того, что он делает. –
Нет разницы между вариантами 1 и 2, кроме разницы в конфигурации. Первый аргумент '/ api'' проверяет только прокси-запрос. Не можете вспомнить, почему вы сохранили цель + путь: 'http: // localhost: 8080/api' и дополнительный параметр« prependPath », если он интуитивно понятен. :) – chimurai