日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

API開放平臺場景示例:cursor、offset、limit分頁處理(郵件組、子賬號)

更新時(shí)間:

重要

風(fēng)險(xiǎn)提示:下述代碼在Python 3.11.9進(jìn)行的測試,用于生產(chǎn)環(huán)境之前請務(wù)必先做好測試。

API開放平臺代碼示例:獲取訪問憑證

一、cursor游標(biāo)分頁數(shù)據(jù)

從前一次調(diào)用的返回值中獲取“nextCursor”的值,作為下一次調(diào)用的請求參數(shù)。

以“批量獲取組織下組信息”為例

Python示例代碼

# -*- coding: utf-8 -*-
import requests
# 導(dǎo)入獲取訪問令牌的函數(shù),路徑根據(jù)實(shí)際情況進(jìn)行修改,或直接給access_token賦值用于測試
from api_demo.get_access_token import access_token


def list_mail_group(cursor):
    """
    接口名稱:批量獲取組織下組信息,一次最多獲取 30 條數(shù)據(jù)
    文檔:https://mailbestwisewords.com/openapi/index.html#/operations/alimailpb_ud_GroupService_ListGroups

    參數(shù):
    cursor (str): 用于分頁的游標(biāo)

    返回:
    返回包含組信息的JSON響應(yīng)
    """
    url = "https://alimail-cn.aliyuncs.com/v2/groups"

    querystring = {"cursor": cursor, "size": "100", "orderby": "DES"}

    headers = {'Content-Type': 'application/json', 'Authorization': 'bearer ' + access_token}

    response = requests.request("GET", url, headers=headers, params=querystring)

    print('##########################################################################')
    print('請求參數(shù):', querystring)
    print('返回參數(shù):', response.status_code, response.text)
    print('##########################################################################')
    return response.json()


def get_all_mail_group():
    """
    獲取郵件組的基本信息

    返回:
    郵件組基本信息列表
    """
    records = []
    cursor = ""
    # 定義類型映射
    type_mapping = {
        "STATIC": "靜態(tài)組",
        "DEPARTMENT": "部門組",
        "DYNAMIC": "動態(tài)組",
        "USERGROUP": "群組",
        "DING": "釘釘組"
    }
    # 定義狀態(tài)映射
    status_mapping = {
        "NORMAL": "正常",
        "FREEZE": "凍結(jié)"
    }
    while True:
        # 獲取數(shù)據(jù)
        parsed_data = list_mail_group(cursor)
        print(f'hasMore={parsed_data["hasMore"]}')

        # 提取所需字段
        for group in parsed_data['groups']:
            record = {
                '郵件組名稱': group['name'],
                '郵件組地址': group['email'],
                '郵件組類型': type_mapping.get(group['type'], group['type']),  # 如果沒有映射,則保留原值
                '狀態(tài)': status_mapping.get(group['status'], group['status'])
            }
            records.append(record)
        # 更新游標(biāo)
        cursor = parsed_data["nextCursor"]
        print(f'nextCursor={cursor}')
        if not parsed_data["hasMore"]:
            print(f'沒有更多數(shù)據(jù)')
            break
    return records


all_data = get_all_mail_group()
print(f'郵件組基本信息:{all_data}')

運(yùn)行結(jié)果

image

二、offset、limit偏移量分頁數(shù)據(jù)

第一次調(diào)用初始偏移量offset為0,limit數(shù)值為步長,下一次請求將從offset+limit的值作為新的起始值。

以“根據(jù)ID或email獲取用戶信息”為例

Python示例代碼

# -*- coding: utf-8 -*-
import requests

# 導(dǎo)入獲取訪問令牌的函數(shù),路徑根據(jù)實(shí)際情況進(jìn)行修改,或直接給access_token賦值用于測試
from api_demo.get_access_token import access_token


def get_department_members(offset, limit, v_depart_id):
    """
    根據(jù)部門ID獲取部門成員
    https://mailbestwisewords.com/openapi/index.html?spm=a2c4g.11186623.0.0.1fdf1742qtp0cA#/operations/alimailpb_ud_UserService_GetUser
    :param offset: 分頁查詢的起始位置
    :param limit: 每頁查詢的成員數(shù)量
    :param v_depart_id: 部門ID
    :return: 成員列表和總成員數(shù)
    """
    url = "https://alimail-cn.aliyuncs.com/v2/departments/" + v_depart_id + "/users"

    querystring = {"offset": offset, "limit": limit}

    headers = {'Content-Type': 'application/json', 'Authorization': 'bearer ' + access_token}

    response = requests.request("GET", url, headers=headers, params=querystring)

    v_members = response.json()
    v_total_member = v_members["total"]
    v_member_items = v_members["users"]
    return v_member_items, v_total_member


offset = 0
limit = 100
department_id = '-----J----.LgfiSm:2:----.MNjFBE'
total_member_items = []
print('##########################################################################')
print(f'開始查詢:{department_id}')
while True:
    member_items, total_members = get_department_members(offset, limit, department_id)
    print(f'成員:第{(offset // limit) + 1}頁:{member_items}')

    # 將當(dāng)前頁的成員列表添加到總列表中
    total_member_items.extend(member_items)
    if len(total_member_items) >= total_members:
        break
    # 更新分頁查詢的起始位置
    offset += limit

print(f'合計(jì):{total_members}個(gè)成員')
print(f'成員信息匯總:{total_member_items}')

運(yùn)行結(jié)果

image