如何在 laravel http 客户端 api 调用中分离基本 URL 和端点?

Posted

技术标签:

【中文标题】如何在 laravel http 客户端 api 调用中分离基本 URL 和端点?【英文标题】:How to seperate base URL and endpoint in laravel http client api call? 【发布时间】:2021-09-04 05:06:04 【问题描述】:

就像在 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


【问题讨论】:

【参考方案1】:

是的,这是可能的。它有一个方法叫baseUrl()

$http=Http::baseUrl("https://stream.twitter.com/")
             ->post('statuses/2',["status"=>"success"]);

假设如果您正在寻找新的客户端,那么配置如下所示

 $client = new Client([
         'base_uri'        => 'http://www.fake.com/1.0/',
         'timeout'         => 0,
         'proxy'           => '192.168.16.1:10'
    ]);

【讨论】:

【参考方案2】:

也许你想要这样的东西?

$client = Http::baseUrl("https://stream.twitter.com/");
$response2 = $client->post('statuses/2',["status"=>"success"]);
$response3 = $client->post('statuses/3',["status"=>"success"]);

【讨论】:

【参考方案3】:

Guzzle 使用guzzle/psr7 来执行此操作。你也可以(我认为任何 PSR7 实现都不仅仅是 Guzzle 的,因为 PSR7 是一个标准):

use GuzzleHttp\Psr7\Uri;

$uri = new Uri('https://stream.twitter.com/');
$uriWithPath = $uri->withPath('statuses/2');

请记住,Uri 是一个不可变类,因此所有变异操作都会创建一个新的 Uri 实例,其中包含您需要的附加属性。

【讨论】:

以上是关于如何在 laravel http 客户端 api 调用中分离基本 URL 和端点?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Passport API 调用代码参数 null

Laravel 7 新功能 HTTP 客户端入门

如何调试来自 ReactJs(另一个项目)客户端的 Laravel API 请求?

laravel学习笔记——HTTP 客户端组件

Laravel:如何将图像或文件发送到 API

如何在 Laravel 5 中验证 RESTful API?