Недавно мне пришлось впервые реализовать Guzzle
, и это довольно простая в использовании библиотека.
Сначала я создал нового клиента
// Passed in our options with just our base_uri in
$client = new Client(["base_uri" => "http://example.com"]);
Затем я создал POST
запрос, хотя я не использую new Request
вместо $client->request(...
. Это не имеет особого значения, хотя я использовал new Request
.
// Create a simple request object of type 'POST' with our remaining URI
// our headers and the body of our request.
$request = new Request('POST', '/api/v1/user/', $this->_headers, $this->body);
так, по сути, это выглядело бы так:
$request = new Request('POST', '/api/v1/user/', ['Content-Type' => "application/json, 'Accept' => "application/json], '{"username": "myuser"}');
$this->headers
- это простой массив пар ключ-значение наших заголовков запросов, в котором обязательно установлен заголовок Content-Type
, а $this->body
- простой строковый объект, в моем случае он формирует тело JSON.
Затем я могу просто вызвать метод $client->send(...
, чтобы отправить запрос, например:
// send would return us our ResponseInterface object as long as an exception wasn't thrown.
$rawResponse = $client->send($request, $this->_options);
$this->_options
- это простой массив пар ключ-значение, опять же простой для массива headers
, но он включает такие вещи, как timeout
для запроса.
Для меня я создал простой Factory
объект с именем HttpClient
, который создает для меня весь Guzzle
запрос, поэтому я просто создаю новый Request
объект вместо вызова $client->request(...
, который также отправит запрос.
person
Popeye
schedule
07.08.2018