Ad Manager API'sinde hem Ana sürüm sürümleri hem de geriye dönük uyumlu, şimdiki ana sürüme yapılan sürümlerle uyumludur.
Hizmetler, yöntemler ve alanlar, ana sürümde (ör. v1) herhangi bir zamanda desteği sonlandırılmış olarak işaretlenebilir ancak ana sürüm kullanımdan kaldırılana kadar desteklenmeye devam eder.
Ana sürüm sürümleri
Büyük sürüm sürümü, geriye dönük uyumlu olmayan API değişiklikleri içeren bir sürüm olarak tanımlanır. Bu sürümler adlandırılacak ve farklı API uç noktalarına sahip olacak. Önceki ana sürümler, taşıma döneminde desteklenir.
Ad Manager API'de büyük sürümler için düzenli bir sürüm yayınlama ritmi yoktur. Yeni büyük sürümler yalnızca gerektiğinde yayınlanır.
Yerinde sürümler
Yeni özellikler ve hata düzeltmeleri dahil geriye dönük uyumlu değişiklikler, mevcut ana API sürümünde yayınlanır. İstemciler bilinmeyen alanları işlemelidir API yanıtlarında.
Geriye Dönük Uyumluluk
Ana sürümdeki değişiklikler için geriye dönük uyumluluk korunur. Uyumluluk şu şekilde tanımlanır:
Kaynak uyumluluğu: Önceki bir sürüm için yazılan kod, daha yeni bir sürüm için derlenir ve istemci kitaplığının daha yeni bir sürümüyle başarıyla çalışır.
Kablo uyumluluğu: Önceki bir sürüme göre yazılmış kod yeni bir sunucuyla doğru şekilde iletişim kurduğundan emin olun. Başka bir deyişle, ve çıkışlar uyumlu olsa da serileştirme ve serileştirmeyle ilgili beklentiler eşleştirmeye devam eder.
Anlamsal uyumluluk: Önceki bir sürüme göre yazılan kod, çoğu makul geliştiricinin beklediği şekilde çalışmaya devam eder.
Aşağıdaki tablolarda, API değişikliklerinin türleri ve geriye dönük uyumlu olup olmadıkları belirtilmektedir.
Hizmetler
Değişiklik Türü | Geriye dönük uyumlu |
---|---|
Yeni hizmet ekleyin | Evet |
Hizmeti kaldırma | Hayır |
Yöntemler
Değişiklik Türü | Geriye dönük uyumlu |
---|---|
Yeni bir yöntem ekleme | Evet |
Yöntemi kaldırma | Hayır |
Bir yöntemin istek veya yanıt türünü değiştirme | Hayır |
Nesneler
Değişiklik Türü | Geriye dönük uyumlu |
---|---|
Zorunlu alan ekleyin | Hayır |
İsteğe bağlı bir alan ekleyin | Evet |
Bir alanı alt mesaja veya alt mesajdan taşıma | Hayır |
Zorunlu olan alanı isteğe bağlı olarak değiştirme | Evet |
İsteğe bağlı olan bir alanı zorunlu olarak değiştirme | Hayır |
Sabit kısıtlamayı kaldırma | Evet |
Sabit kısıtlama ekle | Hayır |
Listeleme
Değişiklik Türü | Geriye dönük uyumlu |
---|---|
Enum değeri ekleme | Evet |
Bir enum değerini kaldırma | Hayır |
Desteği sonlandırılmış alan davranışı
Yeni alanlar
Değişimi olan alanlar için mümkün olduğunda her iki alan da doldurulur.
Güncelleme sırasında her iki alan da ayarlanabilir. Bir güncelleme isteğine her iki alanı da eklemek INVALID_ARGUMENT
hatasıyla sonuçlanır.
Aşağıdaki şemayı göz önünde bulundurun:
{
// The cost of this Foo in micros.
// Deprecated: Use `cost` instead.
"costMicros": number,
// The cost of this Foo.
"cost": {
object (Money)
}
}
Okundu yanıtı her iki alanı da eşdeğer değerlerle doldurur:
{
"costMicros": 1250000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 250000000
}
}
Güncelleme istekleri iki değerden birini ayarlayabilir. Her iki alan da dahil edildiğinde
INVALID_ARGUMENT
hata:
costMicros
// Update payload
{
"costMicros": 1500000
}
// Response payload
{
"costMicros": 1500000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
maliyet
// Update payload
{
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
// Response payload
{
"costMicros": 1500000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
Her ikisi de
// Update payload
{
"costMicros": 1250000,
"cost": {
"currencyCode": "USD",
"units": "1",
"nanos": 500000000
}
}
// Response payload
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "costMicros",
"description": "Cannot update both costMicros and cost."
}
]
}
]
}
}
Desteği sonlandırılan özellikler
Bir ürün özelliği kullanımdan kaldırılırsa ilgili alanlar desteği sonlandırılmış olarak işaretlenir ve anlamsal olarak uygun bir varsayılan değer döndürebilir. Güncellemeler yoksayılabilir.
{
// The salesperson split amount in micros.
// Deprecated: The Sales Management feature has been deprecated. This field
// will always be `0`.
"salespersonSplitMicros": number,
}