如何使用API​​在SAPUI5仪表板中为SAP AIN创建模型?

2020-09-19 16:49发布

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

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


我尝试使用API​​在SAPUI5仪表板中为SAP AIN创建模型。 我收到响应" HTTP 415不支持的媒体类型"。

 var有效负载= {
     " internalId":sModelId,
     " templateId":" ",
     " organizationID":" ",
     " description":{" short":sModelId},
     " equipmentTracking":" 1"
 };
 oJson.loadData("/img/ain/services/api/v1/models",encodeURI(JSON.stringify(payload)),true," POST");
 

oJson 是JSONMOdel。 "/img/ain/" 提供API的目的地。 如何正确交付有效载荷。 我怎么了?


第二个问题:

我确实成功使用了针对"/img/ain/services/api/v1/models" 的GET请求来列出所有模型。 但是,当我尝试在查询参数中设置过滤器时,如果过滤后的制造商字符串中有" +"号,则该过滤器将无法工作。 我确实使用了uri编码。

这是我的代码:

 var sQuery =" $ filter =(制造商eq'" + encodeURIComponent(sManu)+"')";
 this._oFilteredModel.loadData("/img/ain/services/api/v1/models",sQuery);
 

sManu 是一个字符串,用于定义由制造商过滤的制造商,而 _oFilteredModel 是一个JSONModel。

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

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


我尝试使用API​​在SAPUI5仪表板中为SAP AIN创建模型。 我收到响应" HTTP 415不支持的媒体类型"。

 var有效负载= {
     " internalId":sModelId,
     " templateId":" ",
     " organizationID":" ",
     " description":{" short":sModelId},
     " equipmentTracking":" 1"
 };
 oJson.loadData("/img/ain/services/api/v1/models",encodeURI(JSON.stringify(payload)),true," POST");
 

oJson 是JSONMOdel。 "/img/ain/" 提供API的目的地。 如何正确交付有效载荷。 我怎么了?


第二个问题:

我确实成功使用了针对"/img/ain/services/api/v1/models" 的GET请求来列出所有模型。 但是,当我尝试在查询参数中设置过滤器时,如果过滤后的制造商字符串中有" +"号,则该过滤器将无法工作。 我确实使用了uri编码。

这是我的代码:

 var sQuery =" $ filter =(制造商eq'" + encodeURIComponent(sManu)+"')";
 this._oFilteredModel.loadData("/img/ain/services/api/v1/models",sQuery);
 

sManu 是一个字符串,用于定义由制造商过滤的制造商,而 _oFilteredModel 是一个JSONModel。

付费偷看设置
发送
2条回答
SC_Yao
1楼 · 2020-09-19 17:15.采纳回答

尼古拉斯嗨,

问题1:在您的代码段中,您正在使用loadData函数中的oParameters(第二个参数)将uri编码的有效负载附加到请求。 根据SAPUI5文档,这些参数被当作URL参数处理。

SAP UI5 API参考: oParameters -> "与请求一起发送到服务器的映射或字符串。发送到服务器的数据 作为查询字符串附加到URL。如果data参数的值是一个对象(映射),则将其转换为字符串并经过url编码,然后再附加至URL。"

在您的特定情况下,该请求会自动将请求处理为 Content-Type" application/x-www-form-urlencoded"。 T 他将进一步导致415响应。

在SAP资产智能网络的API文档中,您将看到内容类型" application/json"是必需的。 除此之外,必须始终将请求JSON有效负载放入POST请求的正文中。

提到这一点,我的建议是使用一种更灵活的方法来获取您的数据(AJAX请求,XHR等)。
请尝试以下片段,该片段应该可以正常工作。

 var有效负载= {
 internalId:sModelId,
 templateId:" ",
 OrganizationID:" ",
 说明:{
 简称:sModelId
 },
 设备追踪:" 1"
 };


 jQuery.ajax({
 输入:" POST",
 contentType:" application/json",
 网址:"/img/ain/services/api/v1/models",
 数据:JSON.stringify(有效载荷),
 成功:函数(数据,textStatus,jqXHR){
 oJson.setData(data);
 }
 });
 


问题2:

我可以在SAPUI5和Postman中复制您的问题。
对过滤器值进行编码绝对是正确的方法,但是似乎在过滤器查询中存在带" +"号的问题(两者都存在) 编码和未编码)

我尝试使用编码的"&"符号进行完全相同的操作,并返回正确的对象。

请创建支持通知单,以使开发团队检查此潜在错误。


最好的问候

Ingo

粗暴的香蕉
2楼-- · 2020-09-19 17:04

嗨Ingo,

非常感谢! 我尝试按照您的建议使用ajax,它可以工作。 对于第二期,我将创建一个支持票。

最好的问候
尼古拉斯

一周热门 更多>