【问题标题】:Is it possible to encapsulate request parameters in request object?是否可以将请求参数封装在请求对象中?
【发布时间】:2016-11-16 00:42:31
【问题描述】:

是否可以将请求参数封装在GuzzleHttp\Psr7\Request对象中?

我想通过请求参数传递一个完全配置的请求对象,而不是将它们与请求一起传递给Client::send() 方法。

$request = new Reques('POST', $url);
$client->send($request, ['form_params' => $parameters]);

我想将form_params 存储在请求对象中。有可能吗?

【问题讨论】:

    标签: http request guzzle guzzle6


    【解决方案1】:

    Request 类构造函数不接收参数作为请求发送参数。你只能通过请求headers:

    public function __construct(
        $method,
        $uri,
        array $headers = [],
        $body = null,
        $version = '1.1'
    )
    

    它也不提供任何其他方法来获取您的 POST 参数并将其附加到 Request 对象。所以答案是否定的,你不能在请求对象中存储form_params

    【讨论】:

    • 这不是设计缺陷吗?据我所知form_params 和许多其他请求选项都是请求的属性,应该封装在其中。
    • 不知何故你是对的,但你可以在实例化Request 时设置标头,这意味着 Guzzle 将 HTTP 标头视为一条 静态信息,可以重复多个请求。因此,使用Request 的一个实例,您可以发送多个请求,而无需一次又一次地传递相同的标头。作为回报,它将 POST 字段视为动态信息,在发送请求时应将其合并到请求中。所以它需要在每个单独的Clientsend() 方法调用上执行此操作。好吧,我认为它是合法的。 @Kolyunya
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多