웹훅: 파트 III
10271 단어 webhookintegration
Webhook 소비자 애플리케이션 생성
먼저 응용 프로그램에 대한 데이터베이스를 생성했는지 확인하고 이름을
webhook_client
로 지정했습니다.그런 다음 프로젝트를 만들고 패키지를 설치하고 큐 데이터베이스를 설정합니다.
laravel new webhook-client --git --jet --stack=livewire
composer require spatie/laravel-webhook-client
php artisan vendor:publish --provider="Spatie\WebhookClient\WebhookClientServiceProvider" --tag="webhook-client-config"
php artisan vendor:publish --provider="Spatie\WebhookClient\WebhookClientServiceProvider" --tag="webhook-client-migrations"
php artisan queue:table
php artisan migrate
데이터베이스 대기열을 사용하도록
.env
를 업데이트합니다.QUEUE_CONNECTION=database
웹후크 끝점
Laravel Webhook 클라이언트는 경로를 설정하는 쉬운 방법을 제공합니다.
routes/web.php
에 다음을 추가하기만 하면 됩니다.Route::webhooks('webhook/handler');
이전 섹션과 같이 CSRF 토큰 확인을 비활성화하는 것을 잊지 마십시오.
페이로드 처리
구성에서 Spatie Laravel Webhook 클라이언트가 제공하는 내용을 살펴보겠습니다.
<?php
return [
'configs' => [
[
'name' => 'default',
'signing_secret' => env('WEBHOOK_CLIENT_SECRET'),
'signature_header_name' => 'Signature',
'signature_validator' => \Spatie\WebhookClient\SignatureValidator\DefaultSignatureValidator::class,
'webhook_profile' => \Spatie\WebhookClient\WebhookProfile\ProcessEverythingWebhookProfile::class,
'webhook_response' => \Spatie\WebhookClient\WebhookResponse\DefaultRespondsTo::class,
'webhook_model' => \Spatie\WebhookClient\Models\WebhookCall::class,
'store_headers' => [],
'process_webhook_job' => '',
],
],
];
위는 기본 구성이며 기본적으로 웹후크 핸들러에는 수신 페이로드 서명에 사용할
WEBHOOK_CLIENT_SECRET
가 필요합니다.나만의 비밀 키를 가질 수 있습니다. 제가 가장 좋아하는 비밀 키는 항상 무작위로 생성합니다. 이는 tinker를 통해 달성할 수 있습니다.
php artisan tinker
Psy Shell v0.11.7 (PHP 8.1.3 — cli) by Justin Hileman
>>> str()->random(32)
=> "8pZAOAyXfYKd3aAqdxYHsJf4oSTWafaG"
생성 키를 복사하고 저장합니다
.env
파일:WEBHOOK_CLIENT_SECRET=8pZAOAyXfYKd3aAqdxYHsJf4oSTWafaG
그런 다음 들어오는 페이로드를 처리하기 위한 Queue Job 클래스가 필요합니다.
php artisan make:job WebhookHandler
app/Jobs/WebhookHandler.php
를 열고 확장 클래스를 다음과 같이 업데이트합니다.<?php
namespace App\Jobs;
class WebhookHandler extends \Spatie\WebhookClient\Jobs\ProcessWebhookJob
{
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// do your things here with $this->webhookCall
logger()->info($this->webhookCall->payload);
}
}
그리고
config/webhook-client.php
를 업데이트합니다.'process_webhook_job' => \App\Jobs\WebhookHandler::class,
Webhook Provider의 설정 개선
Webhook Provider에서 페이로드를 보낼 때
useSecret()
메서드가 있다는 것을 기억하십니까? 예, Webhook Provider에서 공유하려면 이 비밀 키가 필요합니다. 그렇지 않으면 서명이 유효하지 않으면 페이로드를 처리할 수 없습니다.Webhook Provider에 대한 빠른 업데이트를 수행해 보겠습니다.
app/Models/User.php
에서 url()
헬퍼를 사용하여 useSecret()
및 config()
에 언급된 사용자 정의webhook
구성을 호출합니다.static::created(function(User $model) {
WebhookCall::create()
->url(config('webhook.user.url'))
->payload($model->toArray())
->throwExceptionOnFailure()
->useSecret(config('webhook.user.secret'))
->dispatch();
});
웹후크 제공자
config/webhook.php
:<?php
return [
'user' => [
'name' => 'Webhook Consumer: User',
'url' => env('WEBHOOK_CONSUMER_URL'),
'secret' => env('WEBHOOK_CONSUMER_SECRET')
],
];
그런 다음
.env
에서:WEBHOOK_CONSUMER_URL=http://127.0.0.1:8001/webhook/handler
WEBHOOK_CONSUMER_SECRET=8pZAOAyXfYKd3aAqdxYHsJf4oSTWafaG
Webhook Consumer URL에 유의하십시오. 빠른 설정 및 테스트를 위해
php artisan serve
를 사용하여 실행했습니다.웹후크 테스트
이제 Webhook Provider 및 Webhook Consumer를 테스트할 준비가 되었습니다.
애플리케이션과 대기열을 실행해 보겠습니다.
php artisan serve
php artisan queue:work
Webhook 공급자와 소비자 모두에서 실행합니다.
그런 다음
http://localhost:8000
에 새 계정을 등록하십시오.이제 Webhook Consumer 로그 파일을 검사하면 다음과 같은 내용이 표시되어야 합니다.
[2022-07-12 04:07:52] local.INFO: array (
'id' => 2,
'name' => 'Malik Rich',
'email' => '[email protected]',
'created_at' => '2022-07-12T04:07:48.000000Z',
'updated_at' => '2022-07-12T04:07:48.000000Z',
'profile_photo_url' => 'https://ui-avatars.com/api/?name=M+R&color=7F9CF5&background=EBF4FF',
)
이것을 올바르게 이해하면 올바른 길을 가고 있는 것입니다. 그렇지 않은 경우 대기열 및 경로를 조사할 수 있습니다. 제대로 구성되었는지 확인하십시오.
Reference
이 문제에 관하여(웹훅: 파트 III), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nasrulhazim/webhook-part-iii-5ed2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)