Я относительно новичок в React и пытаюсь развернуть приложение в среде Openshift.Приложение состоит из интерфейса React JS, который выполняет API-вызовы для API-интерфейса nodejs restful.По крайней мере, это идея.
Большинство найденных мной способов предлагают использовать докер, но я не знаю, с чего начать.Документация create-react-app
дает пример сервера Node / Express для рендеринга index.html, с которым я гораздо лучше знаком и начал работать, но я не могу установить прокси-сервер для маршрутизации вызовов API кback-end.
Сначала я попытался установить прокси в package.json, но это не сработало.Затем я нашел express-http-proxy
, который выглядел многообещающе, но не смог заставить его работать.
Мой сервер переднего плана выглядит так:
const express = require('express');
const path = require('path');
const app = express();
const proxy = require('express-http-proxy');
const PORT = process.env.OPENSHIFT_NODEJS_PORT || 8080;
const API_PROXY_URL = process.env.APIURL
app.use(express.static(path.join(__dirname)));
app.use('/api', proxy(API_PROXY_URL));
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'));
});
app.listen(PORT, () => {
console.log(`Server Started on port ${PORT}`);
console.log(`Proxy in use of ${API_PROXY_URL}`);
});
У меня есть общая функция API, котораявыполнение вызовов с помощью axios:
export function apiCall(method, path, data) {
return new Promise((resolve, reject) => {
return axios[method.toLowerCase()](path, data)
.then(res => {
return resolve(res.data);
})
.catch(err => {
return reject(err.response.data.error);
});
});
}
Например, мой, когда я пытаюсь войти в систему, пытается сделать post
вызов на <<REACTURL>>/api/auth/signin
, когда я хочу отправить его на <<APIURL>>/api/auth/signin
.
Я чувствую, что упускаю что-то действительно очевидное.