Süreç İçi API Çağrısı
Zaten kurulumun içinde çalışan kod, HTTP'siz, anahtarsız ve ağ turu olmadan her ucu çağırabilir.
Genel Bakış
Bu dokümandaki her uç örneği dördüncü bir sekme taşır: PHP (Dahili). O sekme aynı HTTP isteğinin kısayolu değil. Aynı kaynağa açılan ikinci bir giriş noktası ve kurulumun içinde yaşayan kod için: bir modül, bir cron işleyicisi, bir kanca dinleyicisi, bir tema.
Kullanma sebebi yalnızca hız değil. Kendi kurulumunuzu HTTP üzerinden çağırmak, kendinize anahtar vermek, o anahtarın istek bütçesini harcamak ve web sunucusunun kendisine erişebilir olmasına bağlı kalmak demektir. Süreç içi çağrıda bunların hiçbiri yok ve tam olarak aynı zarfı döndürür; yanıtı okuduğunuz noktada ikisi birbirinin yerine geçer.
Burası tanımı gereği güvenilen bir bağlam. Kimlik doğrulama, izinler, istek sınırlayıcı, kötüye kullanım koruması, tekrar güvenliği ve istek kaydı HTTP katmanına aittir ve hiçbiri burada çalışmaz. Ne verirseniz çalıştırılır.
Referans
İmza
['data' => …, 'meta' => …], başarısızlıkta ['error' => ['code', 'message', 'details'?]]. API düzeyindeki bir hatada istisna fırlatmaz ve hiçbir şey yazdırmaz.
Grup/Eylem — dokümanın ve izin kutusunun kullandığı metnin aynısı. Müşteri adresine ulaşmak için başına client: ekleyin.
page ve limit buraya girer, $input'a değil.
$input Nasıl Ayrılır
services/{id}/addons gibi bir rotada tek yer tutucu var. ['id' => 5, 'name' => 'Yedek'] vermek 5 değerini yol değeri olarak gönderir ve geriye ['name' => 'Yedek'] gövdesini bırakır. Adresi siz kurmazsınız; rota değişince çağrınız bu yüzden kırılmaz.
Müşteri Adresi
Müşteri adresine yapılan HTTP çağrısı hesabı anahtardan alır. Burada anahtar yok, dolayısıyla hesabın adı verilmelidir: $input içine owner_id koyun ve eylemin başına client: ekleyin. Bu değer gönderimden önce girdiden çıkarılır, yani kaynağa gövde alanı olarak hiç ulaşmaz.
Vermemek tahmin edilmez, reddedilir. Çağrı owner_required döner ve hiçbir şey çalışmaz.
Başarısızlıkta Ne Döner
Grup/Eylem adına cevap veren uç yok. Yazım hatası buraya düşer; client: önekiyle çağrılan bir yönetim eylemi de öyle.
owner_id verilmemiş bir müşteri çağrısı.
Örnek
use WISECP\Api\Kernel;
// yonetim adresi: sorgu secenekleriyle bir liste
$res = Kernel::internal('Clients/GetClients', [], ['page' => 1, 'limit' => 50, 'status' => 'active']);
if (isset($res['error'])) {
\Logger::warning('musteri senkronu basarisiz: ' . $res['error']['code']);
return;
}
foreach ($res['data'] as $client) { /* ... */ }
$more = (int) ($res['meta']['next_page'] ?? 0);
// yol degeri ve govde tek dizide
$upd = Kernel::internal('Clients/UpdateClient', ['id' => 42, 'company_name' => 'Acme Ltd']);
// musteri adresi: hesap tahmin edilmez, adiyla verilir
$me = Kernel::internal('client:Account/GetMe', ['owner_id' => 42]);
Tuzaklar
HTTP çağıranı, kaynağa ulaşmadan önce anahtarının izinlerine göre süzülür. Süreç içi çağrı hiç süzülmez, çünkü çağıran kurulumun kendisidir. Kodunuz bir kişi adına çalışıyorsa, o kişinin neye yetkili olduğuna çağrıdan önce karar verin ve eylemi ya da hedef hesabı asla bir istek değerine seçtirmeyin.
Ad ilk eğik çizgide bölünür ve modül grubu zaten bir tane taşır: Module:Addons/AcmeSync. Bölme yanlış çifti üretir ve çağrı endpoint_not_found döner. Kurulumun içindeki kod, modülün kendi sınıfını ya da operasyonunu doğrudan çağırmalıdır; uç, dışarıdaki çağıranlar için vardır.
API kaydı HTTP trafiğini tutar. Süreç içi çağrı oraya satır bırakmaz; ikisini karıştıran bir entegrasyon operatöre etkinliğinin yalnızca yarısını gösterir. Bir arka plan işinin denetim izine ihtiyacı varsa, kendi izinizi siz yazın.
Demo koruması yazmaları HTTP katmanında reddeder. Bu yol onun altındadır; demo kipindeki bir kurulumda cron işleyicisi ya da kanca dinleyicisi yazmaya devam eder. Bu bilinçlidir, çünkü kurulumun kendi düzeneği çalışmayı sürdürmek zorundadır. Bir demo, olmaması gereken veriyi gösterdiğinde hatırlamaya değer.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.