我对 React 比较陌生,正在尝试将应用程序部署到 Openshift 环境。该应用程序由一个 React JS 前端组成,它向 nodejs 后端 Restful api 进行 API 调用。至少是这个想法。
我发现的大多数方法都建议使用 docker,但我不知道从哪里开始。该create-react-app
单证给出了一个节点/ Express服务器的一个例子来呈现的index.html,其中我更熟悉,并得到了工作,但我似乎无法代理设置路由的API调用后端.
我最初尝试在 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
。
我觉得我错过了一些非常明显的东西。
我无法让它工作,因为我想最终在 API 请求中声明完整的 URL 以使其工作。不漂亮,但可以完成工作:
export function apiCall(method, path, data) {
let url = <<APIURL>> + path
return new Promise((resolve, reject) => {
return axios[method.toLowerCase()](url, data)
.then(res => {
return resolve(res.data);
})
.catch(err => {
return reject(err.response.data.error);
});
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句