Php 使用SuiteRM/SugarCRM REST端点版本4.1

Php 使用SuiteRM/SugarCRM REST端点版本4.1,php,python,sugarcrm,suitecrm,Php,Python,Sugarcrm,Suitecrm,我在尝试让RESTAPI正常工作时遇到了麻烦。是的,代码是Python,但是如果您了解PHP或其他任何东西,我想您可以提供帮助 我写了两个函数。1是助手 def post(self, method, parameters): args = collections.OrderedDict() args['method'] = method args['input_type'] = 'json' args['response_type'] = 'json' a

我在尝试让RESTAPI正常工作时遇到了麻烦。是的,代码是Python,但是如果您了解PHP或其他任何东西,我想您可以提供帮助

我写了两个函数。1是助手

def post(self, method, parameters):
    args = collections.OrderedDict()
    args['method'] = method
    args['input_type'] = 'json'
    args['response_type'] = 'json'
    args['rest_data'] = json.dumps(parameters)
    res = requests.post(self.url, data=args, verify=False)
    if res.ok == False:
        return None
    return res.json()
在下面的get_模块_条目实现中,我只获得前20条记录。无论我将skip或take设置为什么,我只获得前20条记录

def get_module_entries(self, module, skip=0, take=1):
    args = collections.OrderedDict()
    args['session'] = self.session_id
    args['module_name'] = module
    args['query'] = ''
    args['order_by'] = ''

    args['select_fields'] = ''
    args['link_name_to_fields_array'] = ''

    args['offset'] = str(skip)
    args['max_results'] = str(take)
    args['deleted'] = 0
    args['Favorites'] = 0
    res = self.post('get_entry_list', args)
    return res
当我注释掉
select\u fields
link\u name\u到\u fields\u array
时,它确实尊重skip和take。所以,我可以继续按功能获取所有记录。但是,返回的对象只有id,并且缺少所有其他字段。它们看起来像这样:

{“模块名称”:“帐户”、“名称/值列表”:[],“id”:“}

我在这里评论这两行

def get_module_entries(self, module, skip=0, take=1):
    args = collections.OrderedDict()
    args['session'] = self.session_id
    args['module_name'] = module
    args['query'] = ''
    args['order_by'] = ''

    #args['select_fields'] = ''
    #args['link_name_to_fields_array'] = ''

    args['offset'] = str(skip)
    args['max_results'] = str(take)
    args['deleted'] = 0
    args['Favorites'] = 0
    res = self.post('get_entry_list', args)
    return res

这种行为很奇怪。我只想要所有的领域,我想它的荣誉跳过和采取。如果我按任意顺序注释掉一行,而不是注释掉另一行,它就不起作用了。如何解决此问题?

限制20个结果的原因是因为它限制了SuiteRM的列表视图,并且列表视图已为性能问题分页

通常,您会希望分页。实际上,您应该只遍历所需的字段,因为这样会减少跨字段拉取数据所需的带宽。此调用返回的结果包含一个next_offset键,用于帮助请求接下来的20行但是,您可以将限制和偏移设置为-1,以便根据您的查询获取所有bean。

'get_entry_list'的实现在service/core/sugarwebserviceinpl.php:162中。它使用过程列表查询方法,可在data/SugarBean.php:3482中找到。SuiteRM的所有模块都使用它来获取一份甜豆(型号)列表

处理列表查询($query,$row\u offset,$limit=-1,$max\u per\u page=-1,$where=''


在service/core/sugarwebserviceinpl.php:201中,有一个检查确定传入-1时的偏移量=0。限制20个结果的原因是因为它限制了SuiteRM的列表视图,并且列表视图因性能问题而分页

通常,您会希望分页。实际上,您应该只遍历所需的字段,因为这样会减少跨字段拉取数据所需的带宽。此调用返回的结果包含一个next_offset键,用于帮助请求接下来的20行但是,您可以将限制和偏移设置为-1,以便根据您的查询获取所有bean。

'get_entry_list'的实现在service/core/sugarwebserviceinpl.php:162中。它使用过程列表查询方法,可在data/SugarBean.php:3482中找到。SuiteRM的所有模块都使用它来获取一份甜豆(型号)列表

处理列表查询($query,$row\u offset,$limit=-1,$max\u per\u page=-1,$where=''


在service/core/sugarwebserviceinpl.php:201中,有一个检查,当您传入-1时,它确定偏移量=0。是否有一种方法可以在20和“所有”之间做一些事情而不干扰GUI设置?我不知道。其思想是设置每页的记录数,然后请求每页的偏移量。例20/页。偏移量是从eg开始的范围,它是1,21,41(可能是0,20,40,我记不得了)。另外,rest/soap不会影响SuiteRM内部的GUI。每次调用都会返回总记录。有没有办法在20到“所有”之间做一些事情而不干扰GUI设置?我不知道。其思想是设置每页的记录数,然后请求每页的偏移量。例20/页。偏移量是从eg开始的范围,它是1,21,41(可能是0,20,40,我记不得了)。另外,rest/soap不会影响SuiteRM内部的GUI。每次调用时都会返回总记录。