我有一个像这样的简单节点js服务器:
var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
var serverOne = 'http://<address>:<port>/sap/opu/odata/sap/Z_ATTENDANCE_SRV/';
app.use(express.static('webapp'));
app.use(express.static('./'));
app.all("/attendance/*", function(req, res) {
console.log('redirecting to Server1: ' + serverOne);
apiProxy.web(req, res, {target: serverOne});
});
app.listen(3000);
因此,地址localhost:3000/attendance
应该将我重定向到http://<address>:<port>/sap/opu/odata/sap/Z_ATTENDANCE_SRV/
,但不是,我正在获取404。
当我将代理路径设置为"/*"
而不是“ / attendance / *”时,我能够使其工作,但是当我想通过localhost:3000/AttendanceSet
访问实体集“ AttendanceSet”时,给了我404。是否需要为所有路径创建代理? /*
不应该这样做吗?
当我在SAPUI5应用程序中检查oDataModel的初始化时,我可以看到这样的请求(在这种情况下,我为代理设置了“ / *”):
Request URL: http://localhost:3000/$metadata?sap-language=EN
Request Method: GET
Status Code: 200 OK (from disk cache)
Remote Address: [::1]:3000
Referrer Policy: no-referrer-when-downgrade
按照这种逻辑,我应该能够访问实体集AttendanceSet
,但是我想我缺少了一些东西。
谢谢。
答案 0 :(得分:0)
对于像localhost:3000/AttendanceSet
或localhost:3000/Attendance
这样的网址,您必须这样删除端点中的/
。
app.all("/attendance*", function(req, res) {
console.log('redirecting to Server1: ' + serverOne);
apiProxy.web(req, res, {target: serverOne});
});
答案 1 :(得分:0)
看起来像问题出在缓存上。我删除了浏览器缓存,并且在运行节点js服务器时,我使用了-c-1来不进行缓存。