Odoo REST ve XML-RPC API Entegrasyon Eğitimi: Herhangi Bir Sistemi Bağlayın

REST, XML-RPC ve JSON-RPC kullanarak Odoo API'leriyle entegrasyona yönelik adım adım eğitim. Kimlik doğrulamayı, CRUD işlemlerini ve gerçek dünya entegrasyon modellerini kapsar.

E
ECOSIRE Research and Development Team
|16 Mart 20268 dk okuma1.6k Kelime|

Odoo REST ve XML-RPC API Entegrasyonu Eğitimi: Herhangi Bir Sistemi Bağlayın

Odoo, tüm veri modelini harici API'ler aracılığıyla ortaya çıkarır ve e-Ticaret platformları, CRM araçları, iş zekası yazılımı, mobil uygulamalar ve özel uygulamalar gibi hemen hemen her sistemle entegrasyonu mümkün kılar. Bu eğitim, üç API protokolünün tamamını (XML-RPC, JSON-RPC ve REST), kimlik doğrulama yöntemlerini, CRUD işlemlerini ve kod örnekleri ve en iyi uygulamalarla birlikte gerçek dünya entegrasyon modellerini kapsar.

Temel Çıkarımlar

  • Odoo üç API protokolü sağlar: XML-RPC (en olgun), JSON-RPC (tarayıcı dostu) ve REST (Odoo 19, OpenAPI uyumlu)
  • Tüm API'ler, veritabanı adı, kullanıcı adı ve şifre veya API anahtarı kullanılarak kimlik doğrulaması gerektirir
  • CRUD işlemleri tüm protokollerde tutarlı bir model izler: arama, okuma, oluşturma, yazma, bağlantıyı kaldırma
  • Etki alanı filtreleri, karmaşık sorgular için Lehçe gösterim sözdizimi kullanır
  • Sayfalandırma, alan seçimi ve toplu işlemler, büyük veri kümeleri için performansı optimize eder

API Protokolü Karşılaştırması

ÖzellikXML-RPCJSON-RPCDİNLENME (Odoo 19)
VadeOdoo 8'den beri stabilOdoo 10'dan beri stabilOdoo'da Yenilik 19
Kimlik DoğrulamaKullanıcı adı/şifreOturum tabanlıAPI anahtarı veya OAuth 2.0
DokümantasyonKılavuzKılavuzOtomatik oluşturulan OpenAPI
Yanıt formatıXMLJSONJSON
Toplu işlemlerEvetEvetEvet
Web kancalarıHayır (özel modül gerektirir)HayırEvet (yapılandırılabilir)
Dil desteğiHerhangi biri (XML-RPC evrenseldir)JavaScript dostuHerhangi biri (HTTP standardı)

Kimlik Doğrulama

XML-RPC Kimlik Doğrulaması

XML-RPC kimlik doğrulaması iki adımlı bir işlem kullanır: bir kullanıcı kimliği (uid) almak için kimlik doğrulaması yapın, ardından bu kullanıcı kimliğini sonraki çağrılar için kullanın.

Kimlik doğrulama çağrısı, veritabanı adını, kullanıcı adını, parolayı ve boş bir nesneyi ileterek authenticate yöntemiyle /xmlrpc/2/common uç noktasına ulaşır. Yanıt sayısal kullanıcı kimliğidir. Sonraki tüm veri çağrıları, veritabanını, kullanıcı kimliğini, parolayı, model adını, yöntem adını ve bağımsız değişkenleri ileterek execute_kw yöntemiyle /xmlrpc/2/object kullanır.

JSON-RPC Kimlik Doğrulaması

JSON-RPC, /web/session/authenticate uç noktası aracılığıyla oturum tabanlı kimlik doğrulamayı kullanır. İstek gövdesi, jsonrpc: "2.0", call yöntemi ve db, login ve password içeren parametrelere sahip bir JSON nesnesidir. Yanıt, çerezde sonraki isteklerin kimliğini doğrulayan bir oturum kimliğini içerir.

REST API Kimlik Doğrulaması (Odoo 19)

REST API, Odoo arka ucunda oluşturulan API anahtarlarını destekler:

  1. Ayarlar > Kullanıcılar > API Anahtarları'na gidin
  2. Belirtilen izinlere sahip yeni bir anahtar oluşturun
  3. Anahtarı Authorization: Bearer başlığına ekleyin

REST uç noktaları, koleksiyonlar için /api/{model} ve bireysel kayıtlar için /api/{model}/{id} modelini takip eder.

CRUD İşlemleri

Ara ve Oku

En yaygın işlem, belirli kriterlere sahip kayıtları aramak ve alan değerlerini okumaktır.

Alan adı filtreleri operatörlerle Lehçe gösterimi (önek gösterimi) kullanır:

OperatörAçıklamaÖrnek
KOD0EşittirKOD1
KOD0Eşit değilKOD1
KOD0Şundan büyük:KOD1
KOD0'dan az
KOD0Büyük veya eşitKOD1
KOD0ListedeKOD1
KOD0Desen uyumuKOD1
KOD0Büyük/küçük harfe duyarlı olmayan desenKOD1

Koşulları birleştirme: Önek operatörleri olarak & (AND), | (OR) ve ! (NOT) kullanın:

  • VE: ['&', ['state', '=', 'sale'], ['amount_total', '>', 1000]] 1000'in üzerindeki satış siparişlerini eşleştirir
  • VEYA: ['|', ['state', '=', 'sale'], ['state', '=', 'done']] her iki durumla da eşleşir
  • Karmaşık: ['&', ['state', '=', 'sale'], '|', ['partner_id', '=', 5], ['partner_id', '=', 10]]

Alan seçimi: Yük boyutunu azaltmak ve performansı artırmak için yalnızca ihtiyacınız olan alanları isteyin. Alan adlarının listesini içeren bir fields parametresini iletin. Atlanırsa tüm alanlar döndürülür.

Sayfalandırma: Sonuçları sayfalandırmak için offset ve limit parametrelerini kullanın. Örnek: offset: 20, limit: 20 21-40 arasındaki kayıtları döndürür.

Kayıt Oluştur

Alan değerleri sözlüğüyle create yöntemini çağırarak kayıtlar oluşturun. Gerekli alanlar dahil edilmelidir. Yanıt, yeni oluşturulan kaydın kimliğini (veya toplu oluşturma için bir kimlik dizisini) döndürür.

Örnek: Bir kişi oluşturmak için en az name alanı gerekir. İsteğe bağlı alanlar arasında email, phone, company_id, street, city, state_id, country_id ve özel alanlar bulunur.

İlgili kayıtlar için (bir2çok veya çok2çok) özel komut dizilerini kullanın:

KomutSözdizimiAçıklama
OluşturKOD0Yeni bir ilgili kayıt oluşturun
GüncelleKOD0Mevcut bir ilgili kaydı güncelleme
SilKOD0İlgili bir kaydı silin
Bağlantıyı kaldırKOD0Bağlantıyı kaldırın (silmeyin)
BağlantıKOD0Mevcut kayda bağlantı ekleme
DeğiştirKOD0Tüm bağlantıları sağlanan kimliklerle değiştirin

Kayıtları Güncelle

Kayıt kimlikleri ve değiştirilen alanların sözlüğüyle write yöntemini çağırarak kayıtları güncelleyin. Yalnızca değiştirilmesi gereken alanları ekleyin --- atlanan alanlar mevcut değerlerini korur.

Toplu güncellemeler desteklenir: tek bir çağrıda aynı değerlere sahip birden fazla kaydı güncellemek için bir kimlik listesi iletin.

Kayıtları Sil

Kayıt kimlik(ler)iyle unlink yöntemini çağırarak kayıtları silin. Yöntem başarı durumunda True değerini döndürür.

Silme konusunda dikkatli olun; birçok Odoo kaydı iş kuralları tarafından korunmaktadır. Örneğin, deftere nakledilen bir faturayı silmeye çalışmak bir hataya yol açacaktır. Bunun yerine uygun iş yöntemini kullanın (örneğin, silmeden önce button_cancel).

Gerçek Dünya Entegrasyon Modelleri

e-Ticaret Sipariş Senkronizasyonu

Siparişleri harici bir e-Ticaret platformundan Odoo'ya senkronize edin:

  1. Yeni siparişler için anket yapın: Son senkronizasyon zaman damgasından bu yana verilen siparişler için e-Ticaret API'sini sorgulayın
  2. Müşterileri eşleştirin: Odoo kişilerini e-postayla arayın; bulunamadıysa oluştur
  3. Satış siparişi oluşturun: Siparişi müşteri, hatlar, nakliye ve ödeme bilgileriyle oluşturun
  4. Siparişi onayla: Siparişi iş akışı aracılığıyla işlemek için action_confirm numaralı telefonu arayın
  5. e-Ticaret'i güncelleyin: Odoo sipariş referansını e-Ticaret platformuna geri gönderin

Envanter Senkronizasyonu

Envanter seviyelerini Odoo ile harici bir kanal arasında senkronize tutun:

  1. Stok seviyelerini okuyun: Konum filtreleriyle stock.quant üzerinden search_read numaralı telefonu arayın
  2. Güncellemeleri iletin: Miktar değişikliklerini harici kanala gönderin
  3. Rezervasyonlarla ilgilenin: Ayrılmış stok hesabı (bekleyen siparişlere bağlı)
  4. Senkronizasyonu planlayın: Doğruluğu korumak için her 15-30 dakikada bir çalıştırın

CRM Müşteri Adayını İçe Aktarma

Potansiyel müşterileri pazarlama platformlarından Odoo CRM'ye aktarın:

  1. Potansiyel müşteri bulma: Pazarlama platformu API'sından yeni potansiyel müşteriler çekin
  2. Tekilleştirme: Odoo'da mevcut kişileri e-posta veya telefonla arayın
  3. Potansiyel müşteriler oluşturun: Kaynak izlemeyle crm.lead'da kayıtlar oluşturun
  4. Atama: Odoo'nun lider atama kurallarını kullanın veya özel mantığa göre atama yapın

Finansal Verileri Dışa Aktarma

Finansal verileri bir iş zekası platformuna aktarın:

  1. Hesap planını dışa aktar: Hesap yapısı için account.account değerini okuyun
  2. Günlük girişlerini dışa aktar: Tarih filtreleriyle account.move.line öğesini okuyun
  3. Dışa aktarma bakiyeleri: Bakiyeleri hesaba ve döneme göre toplamak için read_group kullanın
  4. Zamanlama: Muhasebe kapanış penceresinden sonra günlük olarak çalıştır

Hata İşleme

Yaygın API Hataları

HataSebepÇözünürlük
Erişim ReddedildiGeçersiz kimlik bilgileri veya izinlerKullanıcı adını, şifreyi ve erişim haklarını doğrulayın
Kayıt bulunamadıOkuma/yazma/bağlantıyı kaldırmada geçersiz kimlikÖnce bir arama yaparak kaydın var olduğunu doğrulayın
Doğrulama HatasıGerekli alanlar eksik veya geçersiz değerlerGerekli tüm alanları geçerli verilerle ekleyin
Kullanıcı Hatasıİş kuralı ihlaliBelirli bir kural için hata mesajını kontrol edin
Eşzamanlılık İstisnasıKayıt başka bir kullanıcı tarafından değiştirildiKaydı yeniden okuyun ve yeniden deneyin

Hız Sınırlama

Odoo, varsayılan olarak API hız sınırlarını uygulamaz ancak üretim dağıtımlarında ters proxy düzeyinde hız sınırlaması uygulanmalıdır. Odoo.sh için kötüye kullanımı önlemek amacıyla varsayılan sınırlar geçerlidir. Makul yoklama aralıkları ve toplu işlemlerle entegrasyonlar tasarlayın.

Stratejiyi Yeniden Dene

Geçici hatalar için üstel geri çekilmeyi uygulayın:

  1. 1 saniye sonra ilk yeniden deneme
  2. 4 saniye sonra ikinci yeniden deneme
  3. 16 saniye sonra üçüncü yeniden deneme
  4. Maksimum yeniden denemeden sonra oturum açın ve uyarı verin

Performans Optimizasyonu

Toplu İşlemler

Bireysel kayıt işleme yerine toplu işlemleri tercih edin:

  • create toplu oluşturma için değer sözlüklerinin bir listesini kabul eder
  • write toplu güncellemeler için bir kimlik listesi kabul eder
  • Sayfalandırmalı search_read, bireysel read çağrılarından daha verimlidir

Alan Seçimi

Gereksiz verilerin yüklenmesini önlemek için her zaman fields parametresini belirtin. 50'den fazla sütuna sahip bir modele tüm alanların yüklenmesi, özellikle sale.order veya account.move.line gibi modeller için önemli miktarda ek yük oluşturur.

Önbelleğe alma

Yavaş yavaş değişen verileri yerel olarak önbelleğe alın:

  • Ürün kataloğu (saatte bir yenilenir)
  • Müşteri listesi (değişiklik bildiriminde yenile)
  • Vergi oranları ve mali pozisyonlar (günlük olarak yenilenir)

ECOSIRE Entegrasyon Hizmetleri

Güvenilir entegrasyonlar oluşturmak, hem harici sistemi hem de Odoo'nun veri modelini anlamayı gerektirir. ECOSIRE'ın Odoo entegrasyon hizmetleri API tasarımını, bağlayıcı geliştirmeyi, veri eşlemeyi ve sürekli izlemeyi kapsar. E-Ticaret platformlarını bağlayan kuruluşlar için özel Shopify-Odoo entegrasyonumuz ve pazar yeri bağlayıcılarımız en yaygın senaryoları ele alır.

İlgili Okumalar

Yeni bir entegrasyon için hangi API protokolünü seçmeliyim?

Odoo 19'daki yeni projeler için REST API'yi kullanın. HTTP standartlarını takip eder, otomatik olarak oluşturulmuş belgelere sahiptir ve kimlik doğrulama için API anahtarlarını destekler. Odoo 17 veya 18 için XML-RPC en güvenilir ve iyi belgelenmiş seçenektir. JSON-RPC, tarayıcı tabanlı entegrasyonlar veya JavaScript uygulamaları için en iyisidir.

Odoo'nun harici API'sinde bir hız sınırı var mı?

Odoo'nun kendisi oran sınırlarını uygulamaz. Ancak Odoo.sh dağıtımlarının altyapı düzeyinde sınırları vardır ve şirket içinde barındırılan dağıtımların ters proxy (Nginx) düzeyinde hız sınırlaması uygulaması gerekir. Toplu işlemleri ve makul yoklama aralıklarını sınırlardan bağımsız olarak kullanacak şekilde entegrasyonlar tasarlayın.

API aracılığıyla iş akışlarını (siparişi onaylama, faturayı gönderme) tetikleyebilir miyim?

Evet. İş akışı yöntemi adıyla execute_kw yöntemini kullanın. Örneğin, onaylamak için sale.order'da action_confirm'yi arayın veya bir günlük girişi kaydetmek için account.move'da action_post'yi arayın. İş akışı yöntemleri, kullanıcı arayüzüyle aynı iş kurallarını uygular.

E

Yazan

ECOSIRE Research and Development Team

ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.

WhatsApp'ta Sohbet Et