【发布时间】:2018-05-30 15:06:56
【问题描述】:
这个问题你可能不清楚,但我的问题很简单
SugarCRM documentation 建议要获取记录,我应该向/<module>/:recordId 发送 GET 请求。
我想要实现的是通过它的电子邮件获取记录。
在之前的 SugarCRM 版本中,我可以在负载请求中向他们的 API 发送 SQL 查询。 但是这里因为它是一个 GET 请求,所以没有正文。
我需要帮助
【问题讨论】:
这个问题你可能不清楚,但我的问题很简单
SugarCRM documentation 建议要获取记录,我应该向/<module>/:recordId 发送 GET 请求。
我想要实现的是通过它的电子邮件获取记录。
在之前的 SugarCRM 版本中,我可以在负载请求中向他们的 API 发送 SQL 查询。 但是这里因为它是一个 GET 请求,所以没有正文。
我需要帮助
【问题讨论】:
要通过匹配非 id 字段来获取记录,您可以使用记录过滤器 API /<module>/filter(请参阅 Sugar 的 documentation 或 /rest/v10/help)来指定要搜索哪些值的字段。
如果您最多只关心一个匹配记录,请在选项中指定"max_num": 1。
作为响应,您将收到一个带有 records 数组的 json 对象,其中包含匹配的记录。
按电子邮件地址过滤
电子邮件地址之前存储在 email1、email2 等字段中。 那些遗留字段仍然存在于 Sugar >=7(目前)中,并且可以与这样的请求负载一起使用:
{
max_num: 1,
filter: [
{"email2": "test@secondary.test"},
],
fields: ["id"],
}
这将仅在辅助电子邮件地址中搜索电子邮件地址。
但是,在现代 Sugar 中,电子邮件地址存储在名为 email_addresses 的关系支持链接字段中,该字段连接到可以像这样搜索的 EmailAddress 记录:
{
max_num: 1,
filter: [
{"email_addresses.email_address": {"$equals": "test@something.test"}},
],
fields: ["id"],
}
这将返回与 any 电子邮件地址匹配的记录。不管它是主要的还是另一个。
随机相关笔记
GET 和POST 方法,因此您可以选择是通过请求的查询字符串还是在请求正文中传输过滤器定义和选项。GET 对 /<module> 端点的请求将使用相同的底层过滤器 API。但是,您不能在 /<module> 上使用 POST 进行过滤,因为该组合保留用于创建新记录。% 来完成,例如对于%@whatever.test,似乎需要使用与$equals 不同的运算符,例如$starts 或 $contains。/<module>/count (GET) 端点或/<module>/filter/count(GET 或POST)。max_num,以确保在由于过滤器定义不正确而在结果中出现任何误报时立即看到它。或者密切关注响应 json 中的 next_offset:如果没有比响应中已经返回的结果更多的结果,它将具有值 -1。$equals 运算符有一个简短的符号,例如{"email_addresses.email_address": {"$equals": "test@something.test"}}, 也可以写成{"email_addresses.email_address": "test@something.test"},。【讨论】: