centras/laravel-centras

centras 库

1.0.4 2024-04-09 07:13 UTC

This package is auto-updated.

Last update: 2024-09-09 08:13:41 UTC


README

Laravel-centras - 我们的库,包括所有微服务的一些通用功能。

目前,主要功能包括:

  1. 用于在调用 API 时发送响应的界面,遵循统一模板。
    • 包括用于 HTTP 响应状态码的预设常量。
    • 用于创建响应的构造函数。
  2. 用于记录传入请求、子请求、响应和子响应的提供程序。
    • 使用 Graylog 服务进行日志记录。
  3. 用于生成通用异常模板的基本类。
    • 生成的异常列表包括
      • AcceessDeniedException
      • ApiException
      • CentrasException
      • ConnectionException
      • DatabaseException
      • FileException
      • InvalidOperationException
      • NotFoundException
      • PaymentException
      • TimeoutException
      • ValidationException

安装

  1. 将以下记录添加到 composer.json 文件的根 json 对象末尾
"repositories": {
  "git.cic.kz/86": {
    "type": "composer",
    "url": "https://git.cic.kz/api/v4/group/86/-/packages/composer/packages.json"
  }
}

例如,可以取一个微服务的 composer.json 文件。

  1. 在项目根目录中创建一个名为 auth.json 的文件。
  2. 将位于项目 Config 文件夹中的 auth.json 文件的内容复制到刚创建的文件中。
  3. 运行命令。
 composer require centras/laravel-centras:1.0.1 
  1. 在执行上一个命令完成后,运行以下命令。
composer update centras/laravel-centras 

使用

1. 响应和异常

要使用响应和异常,将代表程序执行结果的数组封装在特殊函数包装器中。

为此,在您的控制器中导入以下类。

 use App\Api\Api;
 use Illuminate\Http\JsonResponse;

在您的方法末尾添加以下结构。

return Api::response(
         {массив данных}, {код статуса}, {сообщение}
);

将您方法的返回类型指定为 JsonResponse

之后,一切应该都可以正常工作。

例如,可以参考一个项目.

2. 日志记录

首先,检查 laravel-centras 包的更新。

CentrasServiceProvider 提供程序连接到文件 config/app.php,如下所示

 ...App\Providers\EventServiceProvider::class,
 App\Providers\RouteServiceProvider::class,
 App\Providers\CentrasServiceProvider::class,
],

示例

之后,您需要在 config 文件夹中添加一个名为 centras.php 的文件,内容如下

 <?php
 
 return [
     'graylog_url' => 'http://logger:8000/api/write/log'
 ];

 

示例

现在,您只需使用提供者中的名为 IOLog 的对象。

请求分为 request(以下称为请求)

app('IOLog')->request($data);

response(以下称为响应)。

app('IOLog')->response($result->original);
  • 确保响应的数量不超过请求的数量。

  • 理想情况下,它们的数量应该相同。

  • 确保您发送给日志记录器的数据是一个字典。

有时,为了满足所有这些条件,请求甚至可能看起来像这样

$this->ioLog->response([
    'result' => (array)$this->response
]);