如何在POST/PUT/PATCH中格式化edm.decimals?

2020-08-22 19:54发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)对于已回答的问题 https:/...

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

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


对于已回答的问题 https://answers.sap.com/questions/12696596/not-able-to-create-entries-with-decimal-attributes.html

这是有关在将请求发送到CAP服务时在http请求正文中格式化edm.decimal的信息。 与OData规范不同,此操​​作必须作为JSON-Strings完成。 精细。 但是,我发现这不足以使事情正常进行。 考虑以下请求:

 PATCH http://localhost:4004/admin/Products(101)
 内容类型:application/json

 {
     "价格":" 12.13"
 }
 

其中价格为Decimal(9,2)。 这将导致错误响应(Node.js上的CDs版本3.31.1):

"反序列化有效负载时出错;请考虑在内容类型中使用参数IEEE754Compatible = true,并调整格式。在实体反序列化期间发生错误。Edm.Decimal值不支持JSON编号。" 

现在,将Content-Type标头扩展到

内容类型:application/json; IEEE754Compatible = true
 

使请求正常工作!

我的问题:这个IEEE标头参数是CAP团队的正式建议吗? 是否在某处有记录(至少在cap.cloud.sap中找不到)? 设置此IEEE参数还会有更多后果吗?

谢谢

克劳斯

2条回答
DafaDDDa
2020-08-22 20:26

嗨,克劳斯,

对于JavaScript和Node.js,建议始终使用IEEE753Compatible = true格式参数。 无疑,这将使应用程序更强大,因为EDM.Decimal支持的值范围比Javascript数字大;如果对请求有效负载使用JSON.parse()进行处理,则EDM.Decimal值将不会被截断。

关于Oliver

一周热门 更多>