uhin/laravel_api

Laravel 的 API 辅助库。


README

开发者:要为 composer 创建新版本,您需要提交您的更改,添加标签(新版本号),然后推送更改和标签。

在 PHPStorm 中:提交,点击日志,右键单击提交并添加标签,推送(检查推送标签)。

开发使用

在使用此库的服务中,您需要对 composer.json 进行两个更改以进行开发。

首先,将此库的 require 版本改为以下之一:“dev-master”、“1.x-dev”或“2.x-dev”,具体取决于您正在工作的分支。

其次,将以下代码块添加到您的 composer.json 中(编辑路径)

"repositories": [
    {
        "type": "path",
        "url": "/Users/rmclelland/Projects/laravel_api"
    }
]

从您的项目目录运行 composer update。这将创建库与使用该库的项目之间的符号链接。

composer update uhin/laravel_api

升级指南

在升级版本时查看这些文档。

V1 到 V2 升级指南

V2 到 V3 升级指南

使用 Rabbit

Rabbit 构建者

php artisan uhin:make:rabbit-builder

构造函数为构建者提供了配置。根据需要修改构造函数。在构建器的先前版本中,更改是在构建方法中进行的。现在不再需要这样做,但如果需要,构建器仍然可以被覆盖。

public function __construct()
{
        parent::__construct();

        // You can overwrite these parent values
        // $this->exchange = config('uhin.rabbit.exchange');
        // $this->queue = config('uhin.rabbit.queue');
        // $this->routingKey = config('uhin.rabbit.routing_key');
        // $this->connectionName = 'default';
}

Rabbit 发送者

单条消息

要将消息发送到 RabbitMQ,有几种方法可以实现。最基本的方法使用默认交换和来自 .env 的路由键。

(new RabbitSender)->send(json_encode([
       'job_id' => '12312312',
       'source' => 'sftp',
       'filename' => 'test-file.x12',
       'data' => 'alskfl'
   ]));

另一种将消息发送到 RabbitMQ 的方法接受 RabbitBuilder 作为参数。发送者现在可以使用构建器的参数来确定交换和路由键。

$rabbit = new RabbitSender(true, new MPILookupQueueBuilder());
$rabbit->send(json_encode($message));

发送者的属性也可以被覆盖。

$rabbit->setExchange(config('uhin.workers.lookup_mpi_exchange'));
$rabbit->setRoutingKey(config('uhin.workers.lookup_mpi_routing_key'));

批量发送

与单条消息发送的使用相同。sendBatch() 方法接受消息数组并将它们批量发送。对于大量消息,性能显著提高。

Rabbit 接收者

接收者也可以接受构建者并填充连接到 RabbitMQ 的属性。

启动/停止/排空工作进程

启动

php artisan uhin:workers:start

停止

php artisan uhin:workers:stop

排空

php artisan uhin:workers:drain

使用 Twilio SendGrid

首先,确保您已指定以下配置值。SendGridTemplate 类将使用这些配置

  • config('mail.from.address')
  • config('mail.from.name')
  • config('mail.sendgrid.api-key')

模板

使用 SendGrid 邮件模板和 SendGridTemplate 类发送电子邮件的示例

$templateId = config('mail.sendgrid.template.test');
$email = new SendGridTemplate($templateId);

// Send the email to user1, and CC user2 and user3
$metaDataA = new \SendGrid\Mail\Personalization();
$metaDataA->addDynamicTemplateData('sendgrid_var_1', 'custom data value 1');
$metaDataA->addDynamicTemplateData('sendgrid_var_2', 'custom data value 2');
$metaDataA->addCc(new \SendGrid\Mail\Cc('user2@test.com', 'User 2'));
$metaDataA->addCc(new \SendGrid\Mail\Cc('user3@test.com', 'User 3'));
$email->addRecipient('user1@test.com', 'User 1', $metaDataA);

// Send the email to user4, and BCC user5
$metaDataB = new \SendGrid\Mail\Personalization();
$metaDataB->addDynamicTemplateData('sendgrid_var_1', 'custom data value 3');
$metaDataB->addDynamicTemplateData('sendgrid_var_2', 'custom data value 4');
$metaDataB->addBcc(new \SendGrid\Mail\Bcc('user5@test.com', 'User 5'));
$email->addRecipient('user4@test.com', 'User 4', $metaDataB);

// Send out the email template with data attached to it
$email->send();