Aks*_*esh 4 php api http laravel guzzle
就像在 guzzle 中一样,我想将基本 URL 和端点分开
use Guzzle\Http\Client;
use Guzzle\Stream\PhpStreamRequestFactory;
$client = new Client('https://stream.twitter.com/');//base url
$request = $client->post('statuses/2',123);//end point
Run Code Online (Sandbox Code Playgroud)
Joh*_*obo 11
是的,这是可能的。它有一个方法叫做baseUrl().
Laravel 围绕Guzzle HTTP客户端提供了一个富有表现力的、最小的 API ,允许您快速发出传出 HTTP 请求以与其他 Web 应用程序进行通信。
$response = Http::baseUrl("https://reqres.in/api")->get('users');
Run Code Online (Sandbox Code Playgroud)
另一种方法是创建宏。在应用程序的引导方法中定义宏App\Providers\AppServiceProvider class:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Http::macro('reqres', function () {
return Http::baseUrl('https://reqres.in/api');
});
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以像下面一样重用这个方法。
$response = Http::reqres()->get('users');
Run Code Online (Sandbox Code Playgroud)
对于帖子方法
$response = Http::reqres()->post('users',[
"name"=> "morpheus",
"job"=> "leader"
]);
Run Code Online (Sandbox Code Playgroud)
内置的方法有很多,可以参考这里HTTP Client
不要忘记导入立面
use Illuminate\Support\Facades\Http;
Run Code Online (Sandbox Code Playgroud)
如果你想使用Guzzle那么
$client = new GuzzleHttp\Client(['base_uri' => 'https://reqres.in/api/']);
$response = $client->request('GET', 'users');
Run Code Online (Sandbox Code Playgroud)