0

我正在尝试让所有客户使用 MindBody API,我试过这个,

from suds.client import Client
from Helper.ClientService import ClientServiceMethods

# Making a call
calls = ClientServiceMethods()
result = calls.GetAllClients()
client_dict = Client.dict(result)
clients = client_dict['Clients']
client_list = clients.Client # transferring clients into a python list

#printing the lenght of received clients list
print len(client_list)

上面的代码可以工作,但问题是它不会拉超过27个客户端,就是这样。从MindBody Docs GettAllClients应该得到多达 1000 个客户端,呼叫的限制是 1000,这意味着我可以得到多达 1000 个,但问题是我注意到我至少能够得到 1000 个,我只得到 27 个客户.

注意:我正在使用任何人都可以查看的 Demo Data、Sandbox,我使用了他们 MindBody Python 存储库中的示例代码

我正在努力通过 api 获取所有客户数据,这些客户可以 从这里查看

用户名:站长 | 密码:ap​​itest1234

4

2 回答 2

0

对于任何对此也有问题的人,这对您来说将是一个很大的帮助。

当我们调用 GetClients 时,mindbody 将发送客户端,但它会以页面的形式表示它们,因此如果您想获得下一个 25 个客户端,则第 25 个客户端是第一页,您必须调用索引为 2 的页面,依此类推向前。

在代码中,这就是你将如何做到这一点,使用API 示例代码 ClientService,在方法 GetClientsByString 中做到这一点

def GetClientsByString(self, searchStr):
        """Convenience method to find clients containing searchStr in their name or e-mail."""
        request = self.CreateBasicRequest("GetClientsRequest")

        # Since SearchText is just a string, we can assign it directly.
        request.SearchText = searchStr
        request.CurrentPageIndex = 1 # increase this number by one each time 

        return self.service.service.GetClients(request)
于 2017-05-21T13:16:44.440 回答
0

我就是这样处理它的;对一种不那么 API 密集型的更好方法非常开放:

    clientService = ClientServiceCalls()

    #get all client IDs

    clientResponse = clientService.GetClientsByString('')
    clientList = clientResponse.Clients.Client

    clientVisitsDict = []

    for c in clientList:

        #Call get ClientVisits API on each Client ID

        clientResponseVisits = clientService.GetClientVisits(str(c.ID))

        if clientResponseVisits.Visits:
            visitsList = clientResponseVisits.Visits.Visit
            for v in visitsList:

                ### your code here
于 2017-07-23T16:47:24.377 回答