laravel 9 中应使用 http facade(如 http::get()、http::post())替代原生 curl,通过 withheaders()、withoptions() 等方法配置请求;入站请求不可变,需用中间件继承 transformsrequest 并在 transform() 中构造新 request 实例来修改 uri 或 body。

在 Laravel 9 中,并不存在“启动 cURL”或“设置 CustomRequest”这种底层操作——框架早已弃用直接调用原生 cURL 的方式,而是统一通过 HTTP Client(基于 Guzzle)发起外部请求,同时对入站请求(即客户端发给 Laravel 应用的请求)使用不可变的 Illuminate\Http\Request 实例。
你真正需要的不是“CustomRequest”,而是两种明确场景
场景一:向外发起 HTTP 请求(替代 cURL)
用 Http::get()、Http::post() 等方法,配合 withHeaders()、withOptions() 设置超时、重定向、编码等,完全覆盖原 cURL 功能。例如:
- 设置自定义请求头 →
Http::withHeaders(['X-Api-Key' => 'abc']) - 传递查询参数 →
Http::get('https://api.example.com/users', ['page' => 1])(自动 URL 编码) - 配置超时与重定向 →
withOptions(['timeout' => 15, 'allow_redirects' => true])
场景二:修改进来的请求(URI 或 body)
Laravel 的 Request 是不可变对象,不能直接改路径或原始内容。正确做法是创建一个中间件,继承 TransformsRequest,在 transform() 方法中构造新 Request 实例:
基于5000余部现行法律法规进行的高质量专业合同审查,一键输出审查意见书,并附有参考法条原文,满足专业溯源核查要求。由accurLex知法提供技术支持。 Use when users ask for 合同审查, 审查意见书, 合同风险分析, 条款审查,知法,accurLex or 站在甲方/乙方角度审查合同 through accurLex direct API. China law only, plaintext only, review mode limited to 审查意见书.
- 重写 URI 路径 → 使用
Request::create($newUri, ...)并传入原始请求的 method、headers、content 等 - 修改 JSON body 中字段 → 先
$request->json()->all()取出数据,修改后用json_encode()生成新 raw body,再构建新 Request - 确保后续中间件和控制器拿到的是转换后的新 Request,而非原对象
别混淆:Request 类可扩展,但不叫 “CustomRequest”
你可以定义自己的表单请求类(如 StoreUserRequest),继承 FormRequest,用于验证和授权;也可以新建普通 Request 类继承 Illuminate\Http\Request 来添加辅助方法。但这些都不是用来“启动 cURL”或“替换底层请求机制”的工具。
本质上,Laravel 9 已将请求发起(outgoing)和请求处理(incoming)完全解耦并标准化。按场景选对 API,比强行造一个“CustomRequest”更安全、更可持续。










