gpt4 book ai didi

php - API 客户端文件结构的最佳实践或约定

转载 作者:行者123 更新时间:2023-12-05 05:19:33 27 4
gpt4 key购买 nike

我是 Laravel 的新手,需要为我的应用程序将使用的 API 编写一个客户端。

我发现了很多关于在 Controller 操作中实例化 Guzzle 客户端的帖子。在我看来,我应该编写一个使用 API 的类,然后在将结果加载到我的数据库中的 Controller 操作中使用该类。在我看来,它可能位于 app/Http/ 目录下的某个地方。 客户端 也许?

所以 app/Http/Clients/Api.php 看起来像这样:

namespace App\Http\Clients;

use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;

class ApiClient extends Client
{
}

生成的 Controller 操作将使用 cron 安排。

最佳答案

您可以创建一个服务命​​名空间,如下所示:

namespace App\Services;

use GuzzleHttp\Client;

class MyApiWrapper
{
public function __construct() {
$this->client = new Client([
'base_url' => 'https://your-api-domain.com'
]);
}

public function getComments($postId)
{
$uri = sprintf("/posts/{$postId}/comments");

$response = $this->client->request('GET', $uri);

return json_decode($response->getBody(), true);
}
}

然后在你的 Controller 中,你可以这样做:

use App\Services\MyApiWrapper;

class SomeController
{
public function index()
{
$comments = (new MyApiWrapper)->getComments($postId = 123);
return $comments;
}
}

这将返回如下内容:

[
[
"id": 1,
"user_id": 987,
"post_id": 123,
"body": "Lorem ipsum dolor sit amet..."
],
[
"id": 2,
"user_id": 876,
"post_id": 123,
"body": "Lorem ipsum dolor sit amet..."
],
[
"id": 3,
"user_id": 765,
"post_id": 123,
"body": "Lorem ipsum dolor sit amet..."
]
]

关于php - API 客户端文件结构的最佳实践或约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45847191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com