You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Requests在POST请求前检测API中标题是否存在?

解决方案

首先你需要确认目标API提供的查询端点(通常和上传端点不是同一个,比如可能是GET /api/check-title或者GET /api/items这类),如果没有API文档,你可以尝试通过查询参数传递标题(或标题关键词)来发起GET请求,而非完整payload。

具体实现步骤

  • 编写检测标题是否存在的函数,仅传递标题相关的查询参数,无需携带文件和其他payload字段
  • 根据API返回结果判断是否存在匹配项
  • 仅当目标标题不存在时,执行原有的POST上传逻辑

代码示例

import requests

def is_title_exists(api_key, check_url, target_title):
    headers = {
        'Authorization': api_key
    }
    # 用查询参数传递标题,支持精确匹配或模糊匹配(取决于API支持的参数名)
    # 若API支持模糊查询,可修改参数名,比如'title_like'/'title_contains'
    params = {
        'title': target_title
        # 模糊查询示例:'title_contains': target_title[:10]  # 传递标题前10位作为关键词
    }
    response = requests.get(check_url, headers=headers, params=params)
    
    # 根据API返回结构判断,假设响应是JSON数组
    if response.status_code == 200:
        items = response.json()
        # 精确匹配标题
        for item in items:
            if item.get('title') == target_title:
                return True
        # 模糊匹配(可选)
        # for item in items:
        #     if target_title in item.get('title', ''):
        #         return True
    return False

# 原有上传逻辑
def upload_data(api_key, upload_url, file_path, target_title):
    headers = {
        'Authorization': api_key
    }
    # 用with语句自动管理文件资源
    with open(file_path, 'rb') as f:
        files = {
            'file_input': f,
        }
        payload = {
            'title': target_title,
            'type': 3
        }
        response = requests.post(upload_url, files=files, headers=headers, data=payload)
        print(f"上传状态码: {response.status_code}")
        return response

# 主执行逻辑
if __name__ == "__main__":
    API_KEY = "your_api_key_here"
    CHECK_URL = "https://example.com/api/check-title"  # 替换为实际查询端点
    UPLOAD_URL = "https://example.com/api/upload"  # 原上传端点
    FILE_PATH = "your_file.txt"
    TARGET_TITLE = "your_target_title"
    
    if not is_title_exists(API_KEY, CHECK_URL, TARGET_TITLE):
        print("标题不存在,开始上传...")
        upload_data(API_KEY, UPLOAD_URL, FILE_PATH, TARGET_TITLE)
    else:
        print("标题已存在,跳过上传")

注意事项

  • 替换CHECK_URL为实际的API查询端点,若不确定,可抓包查看网站前端查询标题时调用的接口
  • 若API的模糊查询参数不是title_contains,需根据API实际规则调整参数名(部分API用q作为通用搜索关键词参数)
  • 使用with open管理文件,避免资源泄漏

内容的提问来源于stack exchange,提问作者Rose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:15:01