55 lines
2.3 KiB
Python
55 lines
2.3 KiB
Python
from typing import Dict, Any, Optional, List
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class BaseAPIRequest(BaseModel):
|
|
"""基础API请求模型"""
|
|
provider: str = Field(..., description="API提供商", example="chinaz")
|
|
endpoint: str = Field(..., description="端点名称", example="icp_info")
|
|
params: Dict[str, Any] = Field(default_factory=dict, description="请求参数")
|
|
timeout: Optional[int] = Field(30, description="超时时间(秒)")
|
|
|
|
|
|
class ChinazAPIRequest(BaseModel):
|
|
"""站长之家API请求模型"""
|
|
company_name: str = Field(..., description="公司名称", example="百度在线网络技术(北京)有限公司")
|
|
chinaz_ver: Optional[str] = Field("1", description="API版本", example="1")
|
|
timeout: Optional[int] = Field(30, description="超时时间(秒)")
|
|
|
|
|
|
class XiaohongshuNoteRequest(BaseModel):
|
|
"""小红书笔记详情请求"""
|
|
note_id: str = Field(..., description="笔记ID", example="68d2c71d000000000e00e9ea")
|
|
|
|
|
|
class APIResponse(BaseModel):
|
|
"""API响应模型"""
|
|
success: bool = Field(..., description="请求是否成功")
|
|
data: Dict[str, Any] = Field(..., description="响应数据")
|
|
message: Optional[str] = Field(None, description="响应消息")
|
|
provider: Optional[str] = Field(None, description="API提供商")
|
|
endpoint: Optional[str] = Field(None, description="端点名称")
|
|
|
|
|
|
class APIProviderInfo(BaseModel):
|
|
"""API提供商信息"""
|
|
name: str = Field(..., description="提供商名称")
|
|
base_url: str = Field(..., description="基础URL")
|
|
description: Optional[str] = Field(None, description="描述")
|
|
endpoints: List[str] = Field(default_factory=list, description="可用端点")
|
|
|
|
|
|
class APIEndpointInfo(BaseModel):
|
|
"""API端点信息"""
|
|
name: str = Field(..., description="端点名称")
|
|
path: str = Field(..., description="请求路径")
|
|
method: str = Field(..., description="HTTP方法")
|
|
description: Optional[str] = Field(None, description="描述")
|
|
required_params: List[str] = Field(default_factory=list, description="必需参数")
|
|
optional_params: List[str] = Field(default_factory=list, description="可选参数")
|
|
|
|
|
|
class APIListResponse(BaseModel):
|
|
"""API列表响应"""
|
|
providers: List[APIProviderInfo] = Field(..., description="API提供商列表")
|
|
total_providers: int = Field(..., description="提供商总数") |