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

如何自动适配动态变更的URL 无需手动修改即可发起API调用

动态版本参数接口适配方案

URL中随价格更新自动变化的_ver=t*格式参数是WordPress站点常用的缓存控制参数,值会随站点内容更新同步变化,硬编码URL必然会随更新失效,按以下方案处理即可:

方案1:移除可变参数(优先验证)

绝大多数WordPress站点的_ver参数仅用于控制浏览器缓存,服务端不会校验该参数的合法性,不传该参数就能直接拿到最新数据,不需要额外做动态提取。
修改后的代码如下:

import requests
from datetime import datetime

# 固定接口地址,和可变参数拆分
API_BASE = "https://lirarate.org/wp-json/lirarate/v2/rates"

def LiraRateApiCall():
    # 仅传入固定必传的查询参数
    req_params = {"currency": "LBP"}
    resp = requests.get(API_BASE, params=req_params)
    resp.raise_for_status()
    data = resp.json()
    
    timestamp = data['buy'][-1][0] / 1000
    date_fmt = '%d/%m/%y'
    update_date = datetime.fromtimestamp(timestamp)
    buy_rate = data['buy'][-1][1]
    
    print(update_date.strftime(date_fmt))
    print(buy_rate)
    return (update_date.strftime(date_fmt), buy_rate)

方案2:页面动态提取版本参数(方案1失效时使用)

如果测试发现不传_ver会被服务端拦截,就先请求站点首页,从页面源码中正则匹配出最新的_ver值,再拼接参数发起请求,全程不需要手动抓包改代码。
实现代码:

import requests
import re
from datetime import datetime

API_BASE = "https://lirarate.org/wp-json/lirarate/v2/rates"
SITE_HOME = "https://lirarate.org"

def fetch_latest_ver():
    page_resp = requests.get(SITE_HOME)
    page_resp.raise_for_status()
    # 从页面源码匹配_ver参数值
    ver_match = re.search(r'_ver=(t\d+)', page_resp.text)
    if not ver_match:
        raise RuntimeError("无法提取最新接口版本参数")
    return ver_match.group(1)

def LiraRateApiCall():
    req_params = {
        "currency": "LBP",
        "_ver": fetch_latest_ver()
    }
    resp = requests.get(API_BASE, params=req_params)
    resp.raise_for_status()
    data = resp.json()
    
    timestamp = data['buy'][-1][0] / 1000
    date_fmt = '%d/%m/%y'
    update_date = datetime.fromtimestamp(timestamp)
    buy_rate = data['buy'][-1][1]
    
    print(update_date.strftime(date_fmt))
    print(buy_rate)
    return (update_date.strftime(date_fmt), buy_rate)

注意事项

  • 调用requests.get()时通过params传参比手动拼接URL更稳妥,特殊字符会自动转义,参数调整也更方便
  • 新增的resp.raise_for_status()会在接口返回4xx/5xx错误时直接抛出异常,避免后续JSON解析出现无意义报错
  • 方案1测试通过的话不需要用方案2,性能更好,也少一次HTTP请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:24:40