【发布时间】:2016-08-12 14:53:35
【问题描述】:
我在尝试让 REST API 正常运行时遇到了麻烦。是的,代码是 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_module_entries 下面的实现中,我只得到前 20 条记录。无论我设置什么跳过或采取什么,我只得到前 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_fields 和 link_name_to_fields_array 时,它确实很荣幸跳过并接受。所以,我可以继续使用函数来获取所有记录。但是,返回的对象只有 id 并且缺少所有其他字段。它们看起来像这样:
{"module_name": "Accounts", "name_value_list": [], "id": "<snipped out>"}
我在这里注释掉这两行。
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
行为很奇怪。我只想要所有的领域,我希望它尊重跳过和采取。如果我以任一顺序注释掉一行而不是另一行,它就不会起作用。我该如何解决这个问题?
【问题讨论】:
标签: php python sugarcrm suitecrm