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

如何为PHP VCR设置站点白名单以仅录制特定URL响应?

为PHP-VCR设置站点白名单实现指定URL录制

可以给PHP-VCR设置站点白名单,仅录制特定URL的响应。enableRequestMatchers方法主要用于定义请求匹配规则(比如判断两个请求是否为同一请求,从而返回对应的录制响应),并非直接实现白名单过滤,但可以结合请求过滤器来实现需求。

方法一:使用请求过滤器(推荐)

PHP-VCR提供addRequestFilter方法,通过回调函数过滤需要录制的请求——返回true的请求会被录制/回放,返回false的请求会被跳过。

示例代码:

VCR::configure()
    // 添加白名单过滤逻辑
    ->addRequestFilter(function (\VCR\Request $request) {
        // 仅录制包含example.com域名的请求
        return str_contains($request->getUrl(), 'https://example.com');
        
        // 也可以指定精确URL列表
        // $allowedUrls = [
        //     'https://example.com/api/user',
        //     'https://example.com/api/post'
        // ];
        // return in_array($request->getUrl(), $allowedUrls);
    })
    ->turnOn();

方法二:结合enableRequestMatchers实现精确匹配

如果需要更严格的请求匹配(比如同时校验URL和请求方法),可以配合enableRequestMatchers定义匹配维度,再结合过滤器实现白名单。

示例代码:

VCR::configure()
    // 指定匹配规则:按URL和请求方法匹配
    ->enableRequestMatchers(['url', 'method'])
    // 添加白名单过滤
    ->addRequestFilter(function (\VCR\Request $request) {
        $allowedPaths = [
            'https://example.com/api/user',
            'https://example.com/api/post'
        ];
        // 仅允许白名单内的URL,且请求方法为GET
        return in_array($request->getUrl(), $allowedPaths) && $request->getMethod() === 'GET';
    })
    ->turnOn();

关于enableRequestMatchers的说明

该方法的作用是指定VCR在匹配录制请求与当前请求时的判断依据,默认会使用所有可用匹配器(如URL、请求方法、请求头、请求体等)。它不直接控制哪些请求被录制,但能确保回放时仅返回与当前请求完全匹配的录制响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:42:56