Параметры запроса SugarCRM в пользовательской конечной точке - PullRequest
0 голосов
/ 23 апреля 2019

Фон

Я создаю пользовательскую конечную точку REST в SugarCRM, которая объединяет два модуля и возвращает результат.Мне нужно разрешить пользователю передавать необязательные данные в виде параметров запроса.В настоящее время конечная точка выглядит следующим образом:

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();

    }
}

?>

1 Ответ

1 голос
/ 24 апреля 2019

Ваши строки запросов по-прежнему доступны в том же интерфейсе PHP через переменную $ _REQUEST, но они также доступны в ваших $ args:

public function GetLinkLeads($api, $args)
{
    $GLOBALS['log']->fatal("args: " . print_r($args, true));
    $GLOBALS['log']->fatal("request: " . print_r($_REQUEST, true));

}

URL: {сахар} / остаток / v10 / клиент / 1 / филиал / 2 / смещение / 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
)
...