abdasis/laravel-rapidapi
Composer 安装命令:
composer require abdasis/laravel-rapidapi
包简介
Laravel wrapper untuk RapidAPI - konsumsi ribuan API dengan mudah
README 文档
README
Laravel package untuk mengonsumsi API dari RapidAPI dengan mudah. Dilengkapi dengan caching, retry otomatis, logging, dan base class ApiEndpoint untuk membuat wrapper API yang rapi.
Instalasi
composer require abdasis/laravel-rapidapi
Package ini menggunakan Laravel Package Auto-Discovery — service provider terdaftar otomatis.
Publish konfigurasi (opsional)
php artisan vendor:publish --tag=rapidapi-config
Konfigurasi
Tambahkan ke .env:
RAPIDAPI_KEY=your_rapidapi_key_here # Opsional RAPIDAPI_TIMEOUT=30 RAPIDAPI_RETRY_TIMES=3 RAPIDAPI_RETRY_SLEEP=100 RAPIDAPI_CACHE_ENABLED=false RAPIDAPI_CACHE_TTL=3600 RAPIDAPI_LOGGING_ENABLED=false
Penggunaan
Facade
use Abdasis\LaravelRapidApi\Facades\RapidApi; $response = RapidApi::forHost('open-weather-map.p.rapidapi.com') ->get('https://open-weather-map.p.rapidapi.com/weather', [ 'q' => 'Jakarta', ]); $data = $response->json();
Dependency Injection
use Abdasis\LaravelRapidApi\RapidApiClient; class WeatherService { public function __construct( private readonly RapidApiClient $client ) {} public function current(string $city): array { $response = $this->client ->forHost('open-weather-map.p.rapidapi.com') ->get('https://open-weather-map.p.rapidapi.com/weather', [ 'q' => $city, ]); return $response->json(); } }
ApiEndpoint — Base Class
Buat wrapper API yang spesifik dengan extend ApiEndpoint:
use Abdasis\LaravelRapidApi\Support\ApiEndpoint; class TikTokApi extends ApiEndpoint { protected string $host = 'tiktok-downloader.p.rapidapi.com'; protected string $baseUrl = 'https://tiktok-downloader.p.rapidapi.com'; public function getVideo(string $url): array { return $this->get('/vid/index', ['url' => $url])->json(); } }
Daftarkan di service container:
$this->app->singleton(TikTokApi::class);
Method yang Tersedia
RapidApiClient
| Method | Deskripsi |
|---|---|
get(url, query, headers) |
Kirim GET request |
post(url, data, headers) |
Kirim POST request |
put(url, data, headers) |
Kirim PUT request |
patch(url, data, headers) |
Kirim PATCH request |
delete(url, headers) |
Kirim DELETE request |
forHost(host) |
Set X-RapidAPI-Host header |
request() |
Buat RapidApiPendingRequest |
RapidApiPendingRequest
| Method | Deskripsi |
|---|---|
withHost(host) |
Set host untuk request ini |
withHeaders(headers) |
Tambahkan header custom |
withoutCache() |
Skip cache untuk request ini |
get / post / put / patch / delete |
Kirim request |
RapidApiResponse
| Method | Deskripsi |
|---|---|
json(key, default) |
Ambil body sebagai array |
body() |
Ambil body sebagai string |
status() |
HTTP status code |
successful() |
true jika 2xx |
failed() |
true jika 4xx/5xx |
rateLimited() |
true jika 429 |
unauthorized() |
true jika 401 |
notFound() |
true jika 404 |
Penanganan Error
use Abdasis\LaravelRapidApi\Exceptions\RapidApiException; use Abdasis\LaravelRapidApi\Exceptions\RapidApiConnectionException; try { $response = RapidApi::get('https://api.example.com/data'); } catch (RapidApiConnectionException $e) { // Timeout atau gagal koneksi logger()->error($e->getMessage()); } catch (RapidApiException $e) { // Response 4xx/5xx logger()->error($e->getMessage(), [ 'status' => $e->response?->status(), ]); }
Caching
Aktifkan cache untuk mengurangi API call:
RAPIDAPI_CACHE_ENABLED=true RAPIDAPI_CACHE_TTL=3600 RAPIDAPI_CACHE_STORE=redis
Cache otomatis digunakan pada GET request. Nonaktifkan per-request:
RapidApi::request()->withoutCache()->get('https://...');
Testing
composer test
Lisensi
MIT
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-01