Harici bir API (JSON) kullanan symfony tabanlı bir proje yaptım; yaptığım bağımsız bir istemci kitaplığı ("istemci kitaplığı" - bir yazılım parçası, besteci paketi), kendi varlık kümesi (POPO) oluşturmaktı; Symfony tarafından sağlanan arayüzleri kullanarak çerçeveye entegre olur (örneğin, sadece özel bir kullanıcı sağlayıcısı oluşturarak ).
İstemci, gelecekteki test yetenekleri için önemli olan "sahne arkası" adlı http aramaları yapar. Veri kaynağınızla iletişim kurma şeklinizi ortaya çıkarmak istemiyorsunuz ve ayrıca testlerinizin canlı API'ye güvenmesini istemiyorsunuz.
İstemci kitaplığı arabirimi (nasıl görünebileceği örneği):
class ApiClient {
/**
* @throws SomeApiException If credentials are invalid
* @return ApiUser
*/
public function authenticate($username, $password);
/**
* @return ApiUser
*/
public function findUserByEmail($email);
/**
* @throws SomeApiException If email is invalid
* @return void
*/
public function changeUserEmail(User $user, $newEmail);
}
İstemci kitaplığı dahili olarak iletişim için Guzzle'ı ve sonuçları önbelleğe almak için Doktrin Önbellek bileşenini kullanır. Varlık nesneleri ve json arasındaki eşleme, bir kez yazıldığında - çok sık değişmeyen (ya da hiç olay) olmayan haritacılar tarafından yapıldı. Bu durumda JSON ve JSON otomatik dönüşüm için JMS Serializer kullanmanızı öneririm (JSON kullandığınızı varsayıyorum).
İyi bir önbellek mekanizması ve Redis gibi yerel depolamaya ihtiyacınız olacak. Her uygulama isteğinde api çağrıları yapmak sunucunuzu öldürecek ve uygulamanızı büyük ölçüde yavaşlatacaktır. Http önbelleklerinin nasıl çalıştığını anlamak çok önemlidir. API'nız önbellek başlıklarını kullanmıyorsa (veya belirsiz bir şekilde kullanıyorsa) değişiklikleri takip etmek çok zor ve kaynak tüketir.
Ayrıca bağlantı koparsa istemcinin nasıl davranması gerektiğini düşünmek isteyeceksiniz - istemci durmuş verileri kullanmalı mı? Uygulamanız ve API arasında bazı proxy sunucuları kullanmak iyi bir fikir olacaktır. Bu durumda proxy (Vernik gibi) isteklerinizi hızlandırabilir ve uygulamanızı yavaşlatmadan arka planda durmuş verileri yenileyebilir. Ayrıca bir API hatası durumunda web sitenizi çevrimiçi tutacaktır. Bu arada veri yazamayabilirsiniz, ancak kullanıcılarınız yine de önbelleğe alınmış verilere göz atabilir.
Ve Doktrinden bahsetmişken, bkz. " Enstrüman Kanunu ".