CAP -OData V2适配器

2020-08-25 22:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

对于我们开发的应用程序,我需要在V2中公开OData,我发现我们可以使用v2适配器。

我使用了" @ sap/cds-odata-v2-adapter-proxy",但是它给出了内部服务器错误,并且没有相关的应用程序日志

>

我不确定服务器中是否缺少某些内容。 js。 您能帮忙吗?

server.js

"使用严格";
  const https = require(" https");
  const port = process.env.PORT ||  3000;
  const server = require(" http")。createServer();
  const cds = require(" @ sap/cds");
 //为XSA UAA和HDBEXT中间件初始化Express App
  const xsenv = require(" @ sap/xsenv");
  const xssec = require(" @ sap/xssec");
  const xsHDBConn = require(" @ sap/hdbext");
  const express = require(" express");
  const odatav2proxy = require(" @ sap/cds-odata-v2-adapter-proxy")
  https.globalAgent.options.ca = xsenv.loadCertificates();
  global .__ base = __dirname +"/";
  global .__ uaa = process.env.UAA_SERVICE_NAME;
 
  var app = express();
  
  var hanaOptions = xsenv.getServices({
  哈娜:{
  计划:" hdi共享"
  }
  });

//CDS OData V4处理程序
  var options = {
  种类:" hana",
  logLevel:"信息"
  };
  cds.connect(选项);
  var odataURL ="/img/catalog";
 //主应用
  cds.serve(" gen/csn.json",{
  crashOnError:错误
  })
  .at(odataURL)
  .with(require(" ./lib/handlers"))
  .in(app)
  .catch((err)=> {
  console.log(err);
  process.exit(1);
  });

 //将任何重定向到服务根
  app.get("/",(req,res)=> {
  res.redirect(odataURL);
  });
  app.use(odatav2proxy({port}));
   
  require(" ./router")(应用程序,服务器);

 //启动服务器
  server.on(" request",app);
  server.listen(port,function(){
  console.info(`HTTP Server:$ {server.address()。port}`);
  });
 

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

对于我们开发的应用程序,我需要在V2中公开OData,我发现我们可以使用v2适配器。

我使用了" @ sap/cds-odata-v2-adapter-proxy",但是它给出了内部服务器错误,并且没有相关的应用程序日志

>

我不确定服务器中是否缺少某些内容。 js。 您能帮忙吗?

server.js

"使用严格";
  const https = require(" https");
  const port = process.env.PORT ||  3000;
  const server = require(" http")。createServer();
  const cds = require(" @ sap/cds");
 //为XSA UAA和HDBEXT中间件初始化Express App
  const xsenv = require(" @ sap/xsenv");
  const xssec = require(" @ sap/xssec");
  const xsHDBConn = require(" @ sap/hdbext");
  const express = require(" express");
  const odatav2proxy = require(" @ sap/cds-odata-v2-adapter-proxy")
  https.globalAgent.options.ca = xsenv.loadCertificates();
  global .__ base = __dirname +"/";
  global .__ uaa = process.env.UAA_SERVICE_NAME;
 
  var app = express();
  
  var hanaOptions = xsenv.getServices({
  哈娜:{
  计划:" hdi共享"
  }
  });

//CDS OData V4处理程序
  var options = {
  种类:" hana",
  logLevel:"信息"
  };
  cds.connect(选项);
  var odataURL ="/img/catalog";
 //主应用
  cds.serve(" gen/csn.json",{
  crashOnError:错误
  })
  .at(odataURL)
  .with(require(" ./lib/handlers"))
  .in(app)
  .catch((err)=> {
  console.log(err);
  process.exit(1);
  });

 //将任何重定向到服务根
  app.get("/",(req,res)=> {
  res.redirect(odataURL);
  });
  app.use(odatav2proxy({port}));
   
  require(" ./router")(应用程序,服务器);

 //启动服务器
  server.on(" request",app);
  server.listen(port,function(){
  console.info(`HTTP Server:$ {server.address()。port}`);
  });
 

谢谢

付费偷看设置
发送
4条回答
d56caomao
1楼-- · 2020-08-25 23:26

请尝试使用自述文件中的编码: cds-odata-v2-adapter-proxy 。 当您在package中定义此依赖项时,CAP将自动包含@ sap/xssec。

-OData V4服务是否按预期工作? 即/catalog

-您使用哪个版本的CDS OData v2适配器代理?

-您能否将server.js简化为仅需的命令:

即删除行...

xsHDBConn = require(" @ sap/hdbext");
https.globalAgent.options.ca = xsenv.loadCertificates(); < br> global .__ base = __dirname +"/"; global .__ uaa = process.env.UAA_SERVICE_NAME;

-是否有机会设置异常断点,以提示发生错误的地方?

-process.env.XS_APP_LOG_LEVEL =" debug"是否提供更多的日志结果?

-是否有可用的堆栈跟踪?

-CDS模型的外观如何?

一只江湖小虾
2楼-- · 2020-08-25 23:23

感谢Oliver的回复。

1)是,它按预期工作。
2)我使用" @ sap/cds-odata-v2-adapter-proxy":"最新"
3)是,但仍然是相同的问题。
4)无法设置断点,因为它仅是cat-service.cds的定义
5)是,我尝试过,我得到了以下日志

6)一个非常简单的定义也不起作用。

 @ cds.persistence.exists
 实体KNVP {
     键KUNNR:String(10);
         PARVW:字符串(2);
         KUNN2:字符串(10);
         } 

实体KNVP @readonly作为KNVP上的投影;


我正在使用URL
https://........hana.ondemand.com/v2/catalog/CV_MY_CUSTOMER

派大星 ヾ
3楼-- · 2020-08-25 23:40

我为您提供了不同的型号 :

-您具有用于OData v4的cds.serve(" gen/csn.json")

-您有odatav2proxy({port}),它隐式使用模型" all"。 模型"全部"触发db和srv文件夹中所有CDS实体的编译...

因此,您似乎设法以某种方式设法获得了有效的gen/csn.json,但是CDS实体的编译失败。 (请参阅您的屏幕截图)。 看起来"正在使用"语句是错误的,因为它试图查找模块" ..db/data-model'\ ncat-service.cds ...

能否请您致电cds build/compile检查所有CDS文件的有效性,并修复CDS错误?

为了对齐OData服务v2和v4,还应该对代理使用" gen/csn.json",如下所示:

 app.use(odatav2proxy({port,model:" gen/csn.json"})); 

你能检查一下吗? 谢谢。

宇峰Kouji
4楼-- · 2020-08-25 23:27

嗨,格雷格,

感谢您的回复。 我也在做类似的事情。 只是更改了以下路径。 不知道我还缺少什么。

当我运行/v2时,仍然显示内部服务器错误/catalog

 app.use(odatav2proxy({path:'v2',port:port}));
 

一周热门 更多>