通过CAP服务接收任意有效载荷?

2020-08-18 09:05发布

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

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


专家们,

我想知道如何使CAP服务接收和处理任意有效载荷? 背景:CAP应用程序应为另一个应用程序X提供Webhook,以向其提交通知。 X发送类似 https://cloudevents.io/负载的内容。

首先,我尝试为与期望的有效负载匹配的实体建模,但是由于有效负载包含与CDS语法不兼容的名称,因此该方法不起作用。

然后,我尝试了一个动作和一个自定义实现的简单服务。 这是因为请求已成功通过204发布到操作中。但是,在我的自定义实现中找不到有效负载。

 service EventsService {
     动作notify();
 }
 
 module.exports = srv => {
     srv.on('notify',async(req)=> {
         console.log(req.data);
     })
 }

 

有效负载示例

 {"事件类型":" SalesQuote.Root.Updated","事件类型版本":" v1","事件ID":" 00163e87-5338-1eda-a0dd-83d76d55a94a","事件 -time":" 2020-04-20T09:48:41Z",
 " data":{" root-entity-id":" 00163E8753AA1EDA9CE545168DEE707B"," entity-id":" 00163E8753AA1EDA9CE545168DEE707B"}}
 

req.data为空。 我想这是有道理的,因为我对动作建模时没有任何参数。 我浏览了req ._。req,但也找不到那里的有效载荷。

我尝试了除JSON之外的有效负载内容类型,但无法将其反序列化。

在CAP服务中是否可以访问任意有效载荷数据? 我的方法是否可行,是否有另一种模式来实现Webhook通知?

最诚挚的问候,

Manuel

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

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


专家们,

我想知道如何使CAP服务接收和处理任意有效载荷? 背景:CAP应用程序应为另一个应用程序X提供Webhook,以向其提交通知。 X发送类似 https://cloudevents.io/负载的内容。

首先,我尝试为与期望的有效负载匹配的实体建模,但是由于有效负载包含与CDS语法不兼容的名称,因此该方法不起作用。

然后,我尝试了一个动作和一个自定义实现的简单服务。 这是因为请求已成功通过204发布到操作中。但是,在我的自定义实现中找不到有效负载。

 service EventsService {
     动作notify();
 }
 
 module.exports = srv => {
     srv.on('notify',async(req)=> {
         console.log(req.data);
     })
 }

 

有效负载示例

 {"事件类型":" SalesQuote.Root.Updated","事件类型版本":" v1","事件ID":" 00163e87-5338-1eda-a0dd-83d76d55a94a","事件 -time":" 2020-04-20T09:48:41Z",
 " data":{" root-entity-id":" 00163E8753AA1EDA9CE545168DEE707B"," entity-id":" 00163E8753AA1EDA9CE545168DEE707B"}}
 

req.data为空。 我想这是有道理的,因为我对动作建模时没有任何参数。 我浏览了req ._。req,但也找不到那里的有效载荷。

我尝试了除JSON之外的有效负载内容类型,但无法将其反序列化。

在CAP服务中是否可以访问任意有效载荷数据? 我的方法是否可行,是否有另一种模式来实现Webhook通知?

最诚挚的问候,

Manuel

付费偷看设置
发送
5条回答
微wx笑
1楼 · 2020-08-18 09:22.采纳回答

嗨曼努埃尔,

几天前我在 此处收到的答案可能会有所帮助。 >

根据您需要处理的数据,它可能会很有用。 就我而言,它必须简单地返回一个字符串和一个返回码。 我只需在快速服务器文件中添加以下行即可解决我的要求:

等待app.put('/callback/v1.0/tenants/*',函数(req,res){
      ....做一些事情
      res.status(200).send(tenantAppURL);
 });
 等待app.delete('/callback/v1.0/tenants/*',函数(req,res){
     ...做一些事情
     res.status(204);
 });  

希望这会有所帮助。

最诚挚的问候

Marc

灬番茄
2楼-- · 2020-08-18 09:35

这里有人对我的原始问题有见解吗? 我将如何使用CAP构建服务,并使用该服务接收和处理任意有效载荷。 喜欢接收XML文档,甚至是二进制文件?

软件心理学工程师
3楼-- · 2020-08-18 09:26

嗨,

>>首先,我尝试为与期望的有效负载匹配的实体建模,但是由于有效负载包含与CDS语法不兼容的名称,因此无法正常工作。

您是否尝试引用它,例如

函数myFunc(
         "键":字符串
     )返回String
 
吹牛啤
4楼-- · 2020-08-18 09:27

我确实使用了类似的东西:添加了我自己的快速路由器,并在处理传入的XML文档之后,通过企业消息将所有传入的消息发送到CAP应用程序的其余部分。 因此,我仍然可以在附加到消息传递主题的CAP处理程序中编写业务逻辑。

打一壶酱油
5楼-- · 2020-08-18 09:24

我也找不到它的任何文档,但是我在构建过程中发现了一条警告,建议在引号属性标识符上使用![]语法。

一周热门 更多>