大家好,
简介
我一直在玩CAP for NodeJS,为客户开发商业应用程序,以及一些有趣的项目。在这些应用程序中,我还必须添加一个UI5应用程序来与CAP框架的服务层交互。UI通常要求OData服务版本v2,而CAP框架提供OData服务版本v4。为此,SAP提供了一个"odatav2adapterproxy"作为npm包。关于如何在CAP项目中实现这一点,已经有一个教程:https://developers.sap.com/tutorials/cap-cloudsdk-2-v2-adapter.html
除了本教程,Gregor Wolf在GitHub上也有一个很好的示例项目,介绍了如何实现这一点:https://github.com/gregorwolf/bookshop-demo
两者都将帮助您在CAP项目中完美地实现ODataV2适配器代理。不过,在这个博客中,我想与大家分享如何将这个odatav2适配器代理设置为与原始服务器完全相同的、具有CAP所有功能的服务器。这也将使您可以从命令"cds run"运行代理,而不需要另一个npm脚本来运行代理。
除此之外,我还将分享我是如何实现这个代理的。
开始创建CAP项目
开始,按照本教程中的步骤创建一个基本CAP项目:
https://cap.cloud.sap/docs/get-started/in-a-nutshell简介
如果您运行"npm install",npm将在您的项目中安装cds npm包。通常这是不需要的,因为这可能是全球安装。要使用代理,您需要这样做才能使用代理中的cds模块。
原件服务器.js"实现
如果您查看node\u modules文件夹(运行"npm install"之后),您将发现一个文件"服务.js"
如果尚未在本地安装,在线自助建站系统,您可以在全局npm包中查找此文件:
%appdata%\npm\node\u modules\@sap\cds dk\node\u modules\@sap\cds
查看此文件中的代码时,您会注意到以下行:
这行代码将查找"服务器.js"npm包本身中的文件或用于自定义"服务器.js"在CAP项目中的实施。如果CAP发现服务器.js文件,它将使用您的版本而不是默认版本。"这个"服务器.js"需要打电话"服务器.js"并且需要位于"srv"文件夹中,否则CAP将找不到它。
这意味着,一旦您创建了一个"服务器.jsCAP项目的"srv"文件夹中的文件,物联网断路器,微信返利机器人哪个好,"cds run"将使用您的实现服务器.js"
现在,有一个完整版本的"服务器.js"为了不从头开始,你可以找到原件"服务器.js"这里的CAP版本:
这可以作为您的服务器.js"版本:
实现您自己的"服务器.js"
在我们实施之前"服务器.js"我们需要通过运行以下npm来安装代理命令:
npm i@sap/cds-odata-v2-adapter-proxy
(如果尚未完成,请运行npm install。这会将cds npm包添加到您的项目中,您需要在服务器.js"文件)
创建"服务器.js"srv"文件夹中的文件:
从服务器.jsCAP框架的文件(参见本博客前面的内容)。此版本的"服务器.js"尚未包含或使用代理。我们仍然没有v2 OData服务。为了实现这一点,我们需要将代理应用到服务器.js"代码。这可以通过添加以下代码来完成:
2。在返回声明前申请代理:
3。这还行不通。"原件"服务器.js"将尝试从节点模块的lib文件夹加载html索引页。如果我们想在我们的实现中这样做,那么这个html索引页的路径将是不同的。其次,在本地运行时与在SCP中运行时也会有所不同。在本地运行应用程序时,从根级别启动"cds run",但部署后,企业软件公司,服务将拥有自己的模块。这个小补丁将使代理在本地工作,当部署到SCP时:
您可以在GitHub上找到完整的代码:https://github.com/lemaiwo/CAP-UI5-APP/blob/master/srv/server.js
——更新
如Gregor Wolf所述,医疗物联网,而不是复制原件服务器.js"文件,您可以按照的自述文件中的说明创建一个较短的版本OData v2适配器代理:
https://gregorwolf.github.io/SAP-NPM-API-collection/API/cds-odata-v2-adapter-proxy/
就是这样,OData服务现在将支持v4和v2!
运行您的实现
这可以通过简单地运行命令来测试:"cds Run"
结果将与v2和v4版本完全相同。原始url仍将公开ODatav4。添加"/v2/"将提供OData v2版本:
无需为您的服务器.js"文件:
希望它能帮助你,享受用CAP构建应用程序的乐趣