add single page

This commit is contained in:
gongwenxin
2025-08-19 14:44:57 +08:00
parent 336913fbd0
commit fc2b64ccc4
22 changed files with 2309 additions and 1431 deletions
+19 -5
View File
@@ -538,7 +538,7 @@ class InputParser:
self.logger.error(f"An unexpected error occurred while parsing Swagger spec {file_path}: {e}", exc_info=True)
return None
def parse_dms_spec(self, domain_mapping_path: str, base_url: str, headers: Optional[Dict[str, str]] = None, ignore_ssl: bool = False, page_size: int = 1000) -> Optional[Tuple[ParsedDMSSpec, Dict[str, Any]]]:
def parse_dms_spec(self, domain_mapping_path: str, base_url: str, headers: Optional[Dict[str, str]] = None, ignore_ssl: bool = False, page_size: int = 1000, page_no_start: int = 1, fetch_all_pages: bool = True) -> Optional[Tuple[ParsedDMSSpec, Dict[str, Any]]]:
self.logger.info(f"Starting DMS spec parsing. Base URL: {base_url}, Domain Map: {domain_mapping_path}")
if ignore_ssl:
@@ -566,15 +566,22 @@ class InputParser:
self.logger.debug(f"映射关键词 '{keyword}' -> 领域ID '{domain_id}'")
# 实现分页获取API列表
self.logger.info(f"Fetching API list with pagination (page_size={page_size})")
if fetch_all_pages:
self.logger.info(f"Fetching ALL API pages with pagination (page_size={page_size}, starting from page {page_no_start})")
else:
self.logger.info(f"Fetching SINGLE page (page_size={page_size}, page_no={page_no_start})")
api_records = []
page_no = 1
page_no = page_no_start
total_fetched = 0
pagination_info = {
"page_size": page_size,
"page_no_start": page_no_start,
"total_pages": 0,
"total_records": 0,
"pages_fetched": 0
"pages_fetched": 0,
"current_page": page_no_start,
"fetch_all_pages": fetch_all_pages
}
try:
@@ -611,8 +618,15 @@ class InputParser:
pagination_info["total_records"] = total_count
pagination_info["total_pages"] = (total_count + page_size - 1) // page_size # 向上取整
pagination_info["pages_fetched"] = page_no
pagination_info["pages_fetched"] = page_no - page_no_start + 1
pagination_info["current_page"] = page_no
# 如果是单页模式,获取一页后就停止
if not fetch_all_pages:
self.logger.info(f"Single page mode: fetched {len(page_records)} records from page {page_no}")
break
# 全页模式:检查是否还有更多页面
if current_count >= total_count or len(page_records) < page_size:
self.logger.info(f"Reached end of data. Total records: {total_fetched}")
break