我正在嘗試讓REST API行爲不順利。是的,代碼是Python,但如果你知道PHP或其他任何東西,我懷疑你可以提供幫助。使用SuiteCRM/SugarCRM REST端點版本4.1
我寫了兩個函數。 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
這種行爲很奇怪。我只想要所有的領域,我希望它能夠跳過並取得勝利。如果我按照任一順序註釋掉一行而不是另一行,它就不會表現出來。我該如何解決?
傳遞有一種方法做在20和介於兩者之間「一切」沒有搞亂那個GUI設置? – 010110110101
不是我知道了。這個想法是,你設置每頁的記錄數,然後爲每個頁面請求偏移量。例如20 /頁。偏移量是從例如開始的範圍是1,21,41(它可能是0 20 40,我不記得心臟)。另外,其餘的/ soap不影響SuiteCRM內部的GUI。在每次通話期間,總記錄都會返回。 –