İçeriğe geç

NextPDF Gotenberg başlatma ve keşif süreci

Köprünün otomatik keşif mekanizması yoktur. Köprüyü açık kurucu enjeksiyonuyla düz bir hizmet olarak oluşturursunuz: bir yapılandırma değer nesnesi ve PHP Standard Recommendation (PSR) tarafından tanımlanan Hypertext Transfer Protocol (HTTP) bağımlılıkları. Bu paket herhangi bir hizmet sağlayıcı, bundle veya konteyner uzantısı içermez ve kendi başına hiçbir ortam değişkenini okumaz. Buradaki “keşif”, ana çatının bu bağımlılıkları nasıl sağladığını ifade eder. Bu sorumluluk pakete değil, çatıya aittir.

Köprü otomatik olarak keşfedilmez; onu siz oluşturursunuz. GotenbergBridge dört zorunlu bağımsız değişken gerektirir ve üç isteğe bağlı bağımsız değişken kabul eder:

  • Zorunlu: bir GotenbergConfig, bir PSR-18 istemcisi, bir PSR-17 istek fabrikası ve bir PSR-17 akış fabrikası.
  • İsteğe bağlı: bir PSR-3 günlükleyici, bir Hypertext Markup Language (HTML) güvenlik politikası (varsayılan olarak NextPDF çekirdek varsayılan politikası) ve bir PSR-17 yanıt fabrikası.

Yanıt fabrikası, cURL tabanlı sabitlemeli aktarımı etkinleştirir. Bunu sağlarsanız ve köprü sabitleyebileceği bir şey bulursa (çözümlenmiş adresler veya yapılandırılmış SubjectPublicKeyInfo (SPKI) sabitlemeleri), sabitlemeli aktarımı kullanır. Bunu atlarsanız, enjekte edilen PSR-18 istemcisi her zaman kullanılır. Tam bağımsız değişken sözleşmesini şurada bulabilirsiniz: /integrations/gotenberg/configuration/.

Bir kayıt adımı yoktur. Yaşam döngüsü şu şekildedir:

  1. Ana uygulama bir PSR-18 istemcisini ve PSR-17 fabrikalarını çözümler. Bu işlemi ana konteyner yapar; paket yapmaz.
  2. Uygulama, yapılandırma kaynağından bir GotenbergConfig oluşturur. GotenbergConfig::fromArray() bir snake_case dizisini kabul eder ve hatalı biçimlendirilmiş değerlerin yerine varsayılanları kullanır. Kaynağı başlatma yolunuzda doğrulayın; böylece eksik bir Uniform Resource Locator (URL) değeri, her dönüştürmede değil, başlatma sırasında hata verir.
  3. Uygulama, GotenbergBridge nesnesini yapılandırma ve bağımlılıklarla birlikte oluşturur.
  4. İlk dönüştürme çağrısı URL doğrulamasını, server-side request forgery (SSRF) taramasını, dosya adı taramasını ve isteğin yürütülmesini gerçekleştirir. Oluşturma sırasında hiçbir iş yapılmaz; köprü, siz onu çağırana kadar hareketsiz kalır.

Bu paket herhangi bir konteyner bağlaması içermez. Köprünün enjekte edilebilir olması için onu ana uygulamanızın konteynerine şu şekilde kaydedin:

  • Yapılandırma kaynağınızdan GotenbergConfig nesnesini bağlayın.
  • PSR-18 istemcisini ve PSR-17 fabrikalarını seçtiğiniz gerçeklemelere bağlayın.
  • Bu bağımlılıkları alan bir hizmet olarak GotenbergBridge nesnesini bağlayın.

Çatıya özgü otomatik bağlama, yapılandırma yayımlama ve hizmet sağlayıcı ya da bundle kaydı burada değil, ayrı çatı entegrasyon paketlerinde yer alır. Bu paket, tasarım gereği çatıdan bağımsızdır. Yalnızca PSR arabirimlerine bağlıdır, bu nedenle herhangi bir konteyner altında çalışır.

Paket kendi başına hiçbir yapılandırmayı okumaz. Çözümleme sırası, uygulamanızın GotenbergConfig::fromArray() yöntemini veya kurucuyu çağırmadan önce uyguladığı sıradır. Yaygın bir sıralama şudur: önce ortam değişkenleri, ardından yayımlanmış bir yapılandırma dosyası, ardından kod varsayılanları. Bu sıralama, bu paketin değil, uygulamanızın sözleşmesidir. Paketin tanımladığı asıl şey varsayılan değerdir — yani fromArray() yöntemine geçirilen dizinin atladığı her alan için kullanılan değer: boş application programming interface (API) URL’si, 30 saniyelik zaman aşımı, 50 MiB boyut sınırı, boş API anahtarı ve boş sabitleme listeleri.

İki yerleşik sinyal bağlamayı doğrular:

  • isAvailable() URL’yi ağ trafiği olmadan doğrular, ardından bir HEAD isteğini <apiUrl>/health adresine gönderir ve durum 500 değerinin altında olduğunda kullanılabilir olduğunu bildirir. Herhangi bir başarısızlıkta istisna fırlatmak yerine false döndürür. Bunu bir hazırlık denetiminden çağırın.
  • Sorunsuz olduğu bilinen küçük bir belgenin duman testi dönüştürmesi, tüm yolu uçtan uca doğrular. Buna <apiUrl>/forms/libreoffice/convert adresine gönderilen çok parçalı (multipart) istek ve yanıt doğrulaması dahildir.
  • /integrations/gotenberg/integration/ — hizmet üzerinden bir NextPDF işlem hattını yürütme.
  • /integrations/gotenberg/install/ — paket ve hizmet kurulumu.
  • /integrations/gotenberg/configuration/ — tam kurucu ve yapılandırma sözleşmesi.
  • /integrations/gotenberg/overview/ — dönüştürme akışı ve bağımlılık modeli.