通过SAP Cloud SDK for JavaScript API将请求发送到CAP API

2020-08-21 19:33发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 一切正常。 从那里,...

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

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


大家好,

一切正常。 从那里,我成功创建了一个单独的项目以使用Bookshop服务。 在其中,我使用" sap-cloud-sdk generate-odata-client"命令基于该服务创建了一个OData客户端。 我在" service-mapping.json"内部将服务路径设置为"/img/browse",然后为该服务重写了odata-client。

从那里,我想定义一个API端点以从服务中获取所有订单。 这就是我的Cloud SDK API的orders.service.ts。 然后,当然,控制器会使用该服务功能,该功能会将功能路由到GET请求的"/img/books"。

从'@ nestjs/common'导入{可注入};
 从" odata-client/catalog-service"导入{Books};

 const serviceLink:字符串='http://localhost:4004'

 @Injectable()
 导出类BooksService {
    
     异步getAllBooks(){
         const books = await Books.requestBuilder()
             。得到所有()
             .execute({url:serviceLink});

         console.log(books);

         还书;
     }
 }
 

无论如何,请求构建器都会创建HTTP请求'GET/browse/Books?$ format = json',该请求会在Postman中返回正确的结果,但在SDK中不起作用。 CAP API的控制台识别出已发送获取请求,但是SDK API给出错误"无法读取未定义的属性"结果"。 为了使这两个API相互连接,是否需要添加任何额外的样板文件?

SAP社区在解决这类问题方面非常有帮助,对此我深表感谢! 谢谢!

编辑:更多详细信息

这是图书管理员的样子:

 import从'@ nestjs/common'导入{Controller,Get};
 从" ./books.service"导入{BooksService};

 @Controller('books')
 导出类BooksController {
     构造函数(私有readonly booksService:BooksService){}

     @得到()
     getAllBooks(){
         返回this.booksService.getAllBooks()
     }
 }
 

这将导入到其对应的模块中,并由app模块使用。 因此,我最终要向" http://localhost:3000/books"发出GET请求。

5条回答
我是小鹏鹏啊
2020-08-21 19:39 .采纳回答

感谢@dhem,他说CAP需要一个OData v2适配器才能接收来自Cloud SDK API的请求。 我在OData v2适配器的存储库中阅读了自述文件:

https: //github.com/gregorwolf/SAP-NPM-API-collection/tree/master/apis/cds-odata-v2-adapter-proxy

仅对说明进行总结,请在现有CAP项目中运行命令:

 npm install @ sap/cds-odata-v2-adapter-proxy -s 

完成后,在" srv"文件夹中添加一个" server.js",并向其中添加以下代码:

"使用严格";

 const cds = require(" @ sap/cds");
 const proxy = require(" @ sap/cds-odata-v2-adapter-proxy");

 cds.on(" bootstrap",app => app.use(proxy()));

 module.exports = cds.server; 

再次运行项目后,请在服务路径前添加"/img/v2"。 对于OData客户端生成,需要对service-mapping.json执行相同的操作。 重新生成OData客户端并再次运行项目后,它应该可以正常工作。

一周热门 更多>