现在我正在使用laravel框架构建项目。我不是专业人士或其他任何人,过去我在不使用此类框架的情况下从头开始构建我的所有应用程序。
现在我正在为我的网站的某些部分实施Twitch API。在这样做的同时,我遇到了Twitch API返回http错误代码(40x)的情况,即使它提供了一个"有效的"响应。现在我使用了packagist.org上非常流行的Twitch API包。一旦收到40x错误代码,就会抛出异常,这会破坏我的应用程序。
原因是,响应请求如下所示:
$response = $this->client->send($request);
作为一种解决方法,我将其更改为:
$response = $this->client->send($request, ['http_errors' => false]);
显然我也可以使用of GuzzleHttp\Exception
来处理这些错误。但是从我得到的,所有这些都必须发生在我通过composer下载的包中,这意味着一旦作者发布更新并且我运行作曲家更新,我的更改将被覆盖,我的应用程序可能会被破坏,直到我再次修复它。
我想不是每个人都熟悉Twitch API。我的问题的一个简单示例是API调用,您可以检查特定用户是否跟踪特定频道。当用户没有时,响应如下:
{ "错误":"未找到", "消息":" 12345未跟随67890", " status":404}
所以这是一个非常精细且有效的响应,很容易处理但是api不会响应200 http状态响应而是响应404 http状态代码,这将引发异常。
所以我的问题是,即使您发送和接收完美的请求,在API中返回40x状态代码是否真的很好?它不像缺少参数,ID或其他任何错误。它只是某种" bool"查询返回值可以为true或false,false表示返回40x http状态代码但仍包含有效响应。
谢谢
答案 0 :(得分:1)
抛出异常的包是最好的,因为你可以简单地写" global"这些例外的处理程序,只需"显示"发送的错误,但你不应该。
您应该为Twitch API包编写API适配器并处理这些方法中的错误/异常,而不是在控制器或模型中使用Twitch包。您还应该将请求委托给专用服务器(例如Twitch)以进行排队作业。
回答你的问题:
API中的HTTP状态代码是否良好实践?
是的,您还想在哪里使用状态代码? API是一个完美的地方 状态代码易于比较,易于理解。发送的消息只是人类的元信息,用于理解"发生了什么事。
以下部分不在问题的范围内:
你应该从不更改包本身(测试时除外),而不是克隆/ fork包,进行所需的更改,并使用composer来加载你的版本。
<强> composer.json 强>
"repositories": [
{
"type": "vcs",
"url": "https://github.com/username/repository"
}
],
"require": {
.
.
.
"original-repo-package": "dev-branch-form-your-repo as 1.0.0"
}