Technology Blog Posts by SAP
cancel
Showing results for 
Search instead for 
Did you mean: 
ArthurYang
Product and Topic Expert
Product and Topic Expert
602

本文档的目的是帮助您了解如何使用本地启动的CAP后端和云端已部署的auth,db,destination等服务实例对接,来方便开发

 

使用前提是

1.完成暴露接口练习,完成项目部署,BTP上拥有Live的auth,db,destination三个服务实例

 

如果您对BTP感兴趣,BTP个人精选内容目录 | SAP Blogs 可能有更多你需要的内容

 

本文档包含以下部分:

1.暂时移除后端和前端的权限控制

2.本地启动项目

 

1.暂时移除后端和前端的权限控制

为了更方便的进行本地测试,我们首先移除掉本地后端服务的权限控制service-auth.cds,

为方便你回到可部署状态,下方是代码

using { RiskService } from './risk-service';
annotate RiskService.Risks with @(requires: 'authenticated-user');
annotate RiskService.Mitigations with @(restrict : [
            {
                grant : [ 'READ' ],
                to : [ 'RiskViewer' ]
            },
            {
                grant : [ '*' ],
                to : [ 'RiskManager' ]
            }
        ]);

 

然后确保命令行进程已经完成cf login操作

在根目录执行

cds bind -2 cpapp-auth,cpapp-db,cpapp-destination

这个命令实质上是利用当前cf login的身份来将各个服务实例的key保存在本地的 .cdsrc-private.json文件内,来在本地启动项目时连接到云端

 

现在就可以本地启动后端了,和平时不同的是,要使用云上已经部署好的服务实例,需要为命令添加参数

cds watch --profile hybrid

此时访问后端预览页面,点击进入数据服务,就可以看到实际云端数据库内的数据了

 

接下来,同时在本地启动装载了前端代码的approuter

和之前类似,确保approuter文件夹下的default-env.json内的srv-destination指向的是BAS内本地启动的后端服务地址(一般是http://localhost:4004), 然后修改app/approuter/xs-app.json内的authenticationMethod参数值为none

 

其实我更推荐维护多个版本的xs-app.json例如xs-app-dev.json和xs-app-prod.json,

和switchToDev.sh脚本来完成所有本地开发时的动作,脚本内的指令可能包括删除当前的xs-app.json文件,复制xs-app-dev.json为xs-app.json,将service-auth.cds重命名为service-auth.bak

同样的,添加一个switchToProd.sh,删除当前xs-app.json文件并复制xs-app-prod.json为xs-app.json,并将service-auth.bak重命名为service-auth.cds

这样做带来了方便,但也引入了复杂度,那就是修改代码时需要记得在dev和prod两个版本内都完成修改,请自行斟酌

 

再启动一个命令行进程,进入app/approuter后执行

npm start

 

之后打开approuter的预览页面,即可看到本地前端+本地后端+云上db内的数据的组合了,本练习其实是基于CAP官方文档https://cap.cloud.sap/docs/node.js/authentication#xsuaa-setup的,后续有任何问题都可以在https://cap.cloud.sap/docs/进行查阅,希望本系列教程为你带来了帮助。

 

关于本文内容有任何问题或见解,欢迎在评论区留下你的想法