在 PHP 的專案中,如果你需要通過程式碼來發起 HTTP 請求,相信很多人對 GuzzleHttp
這個 Package 很熟悉,然而其實在使用 Guzzle
的時候,我們依然可以做得更簡便一點的,比如我們可以使用 Zttp
,這是基於 Guzzle
的另外一個 HTTP Package。
大致來看看 Zttp
的用法:
1.比如傳送一個攜帶 headers
的 POST
請求:
$response = Zttp::withHeaders([`Fancy` => `Pants`])->post($url, [
`foo` => `bar`,
`baz` => `qux`,
]);
$response->json();
如果你使用 Guzzle
的話,程式碼可能像下面這樣:
$client = new Client();
$response = $client->request(`POST`, $url, [
`headers` => [
`Fancy` => `Pants`,
],
`form_params` => [
`foo` => `bar`,
`baz` => `qux`,
]
]);
json_decode($response->getBody());
所以這樣比較起來,我覺得 Zttp
還是方便,Nice and clean!
2.攜帶 Form 表單引數的 POST 請求:
$response = Zttp::asFormParams()->post($url, [
`foo` => `bar`,
`baz` => `qux`,
]);
3.發起 Patch 請求:
$response = Zttp::patch($this->url(`/patch`), [
`foo` => `bar`,
`baz` => `qux`,
]);
4.發起 PUT 請求:
$response = Zttp::put($this->url(`/put`), [
`foo` => `bar`,
`baz` => `qux`,
]);
5.發起 DELETE 請求:
$response = Zttp::delete($this->url(`/delete`), [
`foo` => `bar`,
`baz` => `qux`,
]);
6.新增一個可接受的 Header:
$response = Zttp::accept(`banana/sandwich`)->post($url);
7.阻止重定向:
$response = Zttp::withoutRedirecting()->get($url);
你可以看到,上面的這些事例程式碼其實可以包含了大部分的應用場景,如果說你還需要更復雜的使用方式,你可以到 Github kitetail/zttp 檢視;而且,即使你還想使用 Guzzle,你依然是可以使用 Guzzle 的,所以我可以負責任地向大家推薦一下這個 Zttp 的 package.