Employee Central提供了一个强大的功能来创建自定义通用对象,也称为元数据框架(MDF)对象。如果登录的用户具有相应的权限,则可以通过"管理工具–>配置对象定义"使用此功能。下面的屏幕截图显示了一个名为cust\u LMS\u Trial的定制通用对象。此对象的每个记录都有一个自动生成的代码(externalCode)、与employee central中的用户的关联(externalName)和四个类型为string的字段(cust\u Field1,…cust\u Field4)。所有其他字段都是系统生成的字段:
此对象定义可以使用简单的UI创建,无需任何编码。在保存了上面的对象定义之后,还可以通过"Admin Tools–>Manage data"使用一个UI来输入数据:
提示:在某些情况下,可能需要在创建对象之后,在第一次成功的API调用之前刷新OData API元数据。此刷新可在"Admin Tools–>OData API Metadata refresh and Export"(在"Manage Integration Tools"组的权限中启用此功能后)中找到。
保存此对象定义后,OData API可立即用于读写数据。请注意,只有
在创建了如上所述的对象定义之后,可以使用rest客户端(如google chrome中的"高级rest客户端")为employee central中创建的对象cust\u LMS\u Trial调用API。
最简单的API调用是检索所创建对象cust\u LMS\u Trial的所有记录。在我们的salesdemo环境中,这样的请求看起来是这样的(请注意,URL在您的环境中可能不同,请参阅OData API程序员指南以获取您的正确URL):
请求URL和操作:
获取https://salesdemo4.successfactors.com/odata/v2/cust\u LMS\u试用版?$format=JSON
请求头:
授权:Basic dXNlckBjb21wYW55OnBhc3N3b3Jk
备注:上面神秘的授权字符串是用户名的base64编码,您登录的实例或公司以及该公司用户对应的密码。要获取上面的字符串,可以使用任何base64编码工具对字符串进行编码用户@公司:密码(例如记事本++和此编辑器中可用的mime工具)。同一请求包括高级rest客户端的部分repsonse:
参数$format用于影响输出格式并以JSON格式返回数据(默认值为ATOM/XML)。
为了通过OData API创建新数据,大数据app,使用POST操作(另请参见). 要为我们的对象cust\ulms\u Trial创建数据,我们必须将操作切换到POST,并在OData请求头中添加一个content-type参数。这个内容类型定义了有效负载的格式,在我们的例子中是JSON,以及使用的字符集(这里是utf-8):
请求URL和操作:
POSThttps://salesdemo4.successfactors.com/odata/v2/cust\u LMS\u试用版?$format=JSON
请求头:
授权:Basic dXNlckBjb21wYW55OnBhc3N3b3Jk
内容类型:application/JSON;charset=utf-8
负载:
{
"cust\u Field1":"15",
"cust\u Field4":"40",
"cust\u Field3":"30",
"cust\u Field2":"20",
"externalName":"greinhard"
}
响应:
状态"201 Create"并在响应中创建数据
google chrome中的相同创建请求:
为了更新现有数据,必须使用PUT操作,并且必须在URL中标识相应的记录。OData请求用键162更新cust\u LMS\u试用记录如下所示。与创建数据相比,请不要只更改操作和url:
请求url和操作:
放置https://salesdemo4.successfactors.com/odata/v2/cust\u LMS\u试用版(162L)?$format=JSON
请求头:
授权:Basic dXNlckBjb21wYW55OnBhc3N3b3Jk
内容类型:application/JSON;charset=utf-8
负载:
{
"cust\u Field1":"151",
"cust\u Field4":"401",
"cust\u Field3":"301",
"cust\u Field2":"201",
"externalName":"greinhard"
}
响应:
状态"200 OK",无数据响应
google chrome中的相同请求:
使用上述示例中的字段"externalName"作为简单字段只是一种方便创建数据的快捷方式。通常必须使用专用的导航属性创建关联。如果字段被标记为必需,并且在对象定义中为这些字段启用了相应的权限检查,则此创建数据的快捷方式版本将不再工作:
从这个角度来看,如果您计划稍后切换到启用权限模式并使此字段变为可用,则使用快捷方式不是一个好主意"externalName"是必需的。
在这种情况下,最好使用如下有效负载:
{
"cust\u Field1":"11",
"cust\u Field4":"41",
"cust\u Field3":"31",
"cust\u Field2":"21",
"externalNameNav":{
"cust\u metadata":{
"uri":https://salesdemo4.successfactors.com:443/odata/v2/User('greinhard')",
"类型":SFOData.用户"
}
}
}
伟大的贡献杰拉尔德!
美丽的博客!
有一个问题-当我们尝试使用Odata API从自定义通用/元数据对象检索数据时,它提供了该通用对象的所有记录的详细信息。
是否可以通过Odata API调用获取登录用户的用户名/或在base64编码过程中传递的用户名。
谢谢,Sahiba Gandhi
Hi,