自定义端点中的 SugarCRM 查询参数
SugarCRM query parameters in custom endpoint
背景
我正在 SugarCRM 中构建一个自定义 REST 端点,它将两个模块连接在一起并 returns 结果。我需要允许用户以查询参数的形式传入可选数据。目前端点如下所示:
http://base-url.com/api/customer/{customer_id}/branch/{branch_id}/offset/{offset}
然而,这需要我传入一个偏移值。相反,我想让端点看起来像
http://base-url.com/api/customer/{customer_id}/branch/{branch_id}?offset={offset}
我查看了 SugarCRM 开发人员文档并在线查看,但找不到任何使用查询参数的明确示例。
我的代码
下面是我的代码。此代码示例与上面列出的第一个端点匹配。我的目标是将偏移参数修改为查询字符串而不是路径变量
<?php
if( !defined('sugarEntry') || !sugarEntry )
die('Not A Valid Entry Point');
class LinkLeadsApi extends SugarApi
{
public function registerApiRest()
{
return array(
'LinkLeadsEndpoint' => array(
'reqType' => 'GET',
'noLoginRequired' => false,
'path' => array('customer', '?', 'branch', '?', 'offset', '?'),
'pathVars' => array('customer', 'customer_id', 'branch', 'branch_id', 'offset', 'offset_num'),
'method' => 'GetLinkLeads',
'shortHelp' => 'Retrieve Leads for Latham Link',
'longHelp' => 'Retrieve Leads for Latham Link'
)
);
}
public function GetLinkLeads($api, $args)
{
$seed = BeanFactory::newBean('w002_ConsumerLeads');
$q = new SugarQuery();
$q->from($seed);
$q->limit($args['offset_num']);
return $q->execute();
}
}
?>
您的查询字符串仍然可以通过 $_REQUEST 变量在同一 PHP 界面中访问,但它们也可以在您的 $args:
中使用
public function GetLinkLeads($api, $args)
{
$GLOBALS['log']->fatal("args: " . print_r($args, true));
$GLOBALS['log']->fatal("request: " . print_r($_REQUEST, true));
}
url: {糖}/rest/v10/customer/1/branch/2/offset/3?qs=4
sugarcrm.log
Wed Apr 24 12:06:27 2019 [19200][-none-][FATAL] args: Array
(
[__sugar_url] => v10/customer/1/branch/2/offset/3
[qs] => 4
[customer] => customer
[customer_id] => 1
[branch] => branch
[branch_id] => 2
[offset] => offset
[offset_num] => 3
)
Wed Apr 24 12:06:27 2019 [19200][-none-][FATAL] request: Array
(
[__sugar_url] => v10/customer/1/branch/2/offset/3
[qs] => 4
)
背景
我正在 SugarCRM 中构建一个自定义 REST 端点,它将两个模块连接在一起并 returns 结果。我需要允许用户以查询参数的形式传入可选数据。目前端点如下所示:
http://base-url.com/api/customer/{customer_id}/branch/{branch_id}/offset/{offset}
然而,这需要我传入一个偏移值。相反,我想让端点看起来像
http://base-url.com/api/customer/{customer_id}/branch/{branch_id}?offset={offset}
我查看了 SugarCRM 开发人员文档并在线查看,但找不到任何使用查询参数的明确示例。
我的代码
下面是我的代码。此代码示例与上面列出的第一个端点匹配。我的目标是将偏移参数修改为查询字符串而不是路径变量
<?php
if( !defined('sugarEntry') || !sugarEntry )
die('Not A Valid Entry Point');
class LinkLeadsApi extends SugarApi
{
public function registerApiRest()
{
return array(
'LinkLeadsEndpoint' => array(
'reqType' => 'GET',
'noLoginRequired' => false,
'path' => array('customer', '?', 'branch', '?', 'offset', '?'),
'pathVars' => array('customer', 'customer_id', 'branch', 'branch_id', 'offset', 'offset_num'),
'method' => 'GetLinkLeads',
'shortHelp' => 'Retrieve Leads for Latham Link',
'longHelp' => 'Retrieve Leads for Latham Link'
)
);
}
public function GetLinkLeads($api, $args)
{
$seed = BeanFactory::newBean('w002_ConsumerLeads');
$q = new SugarQuery();
$q->from($seed);
$q->limit($args['offset_num']);
return $q->execute();
}
}
?>
您的查询字符串仍然可以通过 $_REQUEST 变量在同一 PHP 界面中访问,但它们也可以在您的 $args:
中使用public function GetLinkLeads($api, $args)
{
$GLOBALS['log']->fatal("args: " . print_r($args, true));
$GLOBALS['log']->fatal("request: " . print_r($_REQUEST, true));
}
url: {糖}/rest/v10/customer/1/branch/2/offset/3?qs=4
sugarcrm.log
Wed Apr 24 12:06:27 2019 [19200][-none-][FATAL] args: Array
(
[__sugar_url] => v10/customer/1/branch/2/offset/3
[qs] => 4
[customer] => customer
[customer_id] => 1
[branch] => branch
[branch_id] => 2
[offset] => offset
[offset_num] => 3
)
Wed Apr 24 12:06:27 2019 [19200][-none-][FATAL] request: Array
(
[__sugar_url] => v10/customer/1/branch/2/offset/3
[qs] => 4
)