Azure API Management ilkeleri
UYGULANANLAR: Tüm API Management katmanları
Azure API Management'ta API yayımcıları, ilkeleri kullanarak yapılandırma aracılığıyla API davranışını değiştirebilir. İlkeler, bir API isteği veya yanıtı üzerinde sırayla çalıştırılan deyimlerin bir koleksiyonudur. API Management, kimlik doğrulaması, hız sınırlama, önbelleğe alma ve isteklerin veya yanıtların dönüştürülmesi gibi yaygın API senaryolarını ele almak için yapılandırabileceğiniz 50'den fazla ilke sağlar. Tam liste için bkz. API Management ilke başvurusu.
Popüler ilkeler şunlardır:
- XML'den JSON'a biçim dönüştürme
- Bir geliştiriciden gelen çağrı sayısını kısıtlamak için çağrı hızı sınırlaması
- Belirli IP adreslerinden gelen istekleri filtreleme
İlkeler, API tüketicisi ile yönetilen API arasındaki ağ geçidi içerisinde uygulanır. Ağ geçidi istekleri alır ve bunları değiştirmeden temel alınan API'ye iletirken, ilke hem gelen isteğe hem de giden yanıta değişiklikler uygulayabilir.
İlke yapılandırmasını anlama
İlke tanımları, isteklere ve yanıtlara uygulanacak deyim dizisini açıklayan basit XML belgeleridir. İlke tanımlarını yapılandırmanıza yardımcı olmak için portal şu seçenekleri sağlar:
- XML kodlamadan popüler ilkeleri yapılandırmayı basitleştirmek için kılavuzlu, form tabanlı bir düzenleyici
- XML kod parçacıkları ekleyebileceğiniz veya XML'yi doğrudan düzenleyebileceğiniz bir kod düzenleyicisi
İlkeleri yapılandırma hakkında daha fazla bilgi için bkz . İlkeleri ayarlama veya düzenleme.
İlke XML yapılandırması , backend
, outbound
ve on-error
bölümlerine inbound
ayrılır. Belirtilen ilke deyimleri dizisi bir istek ve yanıt için yürütülür.
<policies>
<inbound>
<!-- statements to be applied to the request go here -->
</inbound>
<backend>
<!-- statements to be applied before the request is forwarded to
the backend service go here -->
</backend>
<outbound>
<!-- statements to be applied to the response go here -->
</outbound>
<on-error>
<!-- statements to be applied if there is an error condition go here -->
</on-error>
</policies>
İlke XML örnekleri için bkz . API Management ilke parçacıkları deposu.
Hata işleme
bir isteğin işlenmesi sırasında bir hata oluşursa:
- ,
backend
veyaoutbound
bölümlerinde kalaninbound
tüm adımlar atlanır. - Yürütme bölümündeki deyimlere atlar
on-error
.
bölüme on-error
ilke deyimleri yerleştirerek şunları yapabilirsiniz:
- özelliğini kullanarak
context.LastError
hatayı gözden geçirin. - İlkeyi kullanarak hata yanıtını inceleyin ve özelleştirin
set-body
. - Hata oluşursa ne olacağını yapılandırın.
Daha fazla bilgi için bkz . API Management ilkelerinde hata işleme.
İlke ifadeleri
İlke aksini belirtmediği sürece, ilke ifadeleri API Management ilkelerinin herhangi birinde öznitelik değerleri veya metin değerleri olarak kullanılabilir. İlke ifadesi şu şekildedir:
- içine alınmış
@(expression)
tek bir C# deyimi veya - içinde bir değer döndüren çok deyimli bir C# kod bloğu
@{expression}
Her ifade örtük olarak sağlanan context
değişkene ve .NET Framework türlerinin izin verilen bir alt kümesine erişebilir.
İlke ifadeleri, özel kod yazmanıza veya arka uç hizmetlerini değiştirmenize gerek kalmadan trafiği denetlemek ve API davranışını değiştirmek için gelişmiş bir araç sağlar. Bazı ilkeler Denetim akışı ve Değişken ayarla gibi ilke ifadelerini temel alır.
Kapsamlar
API Management, ilkeleri en genişten en dara kadar aşağıdaki kapsamlarda tanımlamanızı sağlar:
- Genel (tüm API'ler)
- Çalışma alanı (seçili çalışma alanıyla ilişkili tüm API'ler)
- Ürün (seçili bir ürünle ilişkili tüm API'ler)
- API (BIR API'deki tüm işlemler)
- İşlem (API'de tek işlem)
İlkeyi yapılandırırken, önce ilkenin uygulanacağı kapsamı seçmeniz gerekir.
Bilinmesi gerekenler
Farklı API tüketicileri için ayrıntılı denetim için, ilke tanımlarını birden fazla kapsamda yapılandırabilirsiniz
Her kapsam ve ilke bölümünde tüm ilkeler desteklenmez
İlke tanımlarını birden fazla kapsamda yapılandırırken, öğesinin yerleştirilmesine
base
göre ilke devralmayı ve ilke değerlendirme sırasını her ilke bölümünde denetleyebilirsinizAPI isteklerine uygulanan ilkeler, istekte kullanılan bir abonelik anahtarının varlığı veya olmaması, abonelik anahtarının API veya ürün kapsamı ve API'nin veya ürünün abonelik gerekip gerektirmediği de dahil olmak üzere istek bağlamından da etkilenir.
Not
API kapsamlı bir abonelik, tüm API'ler aboneliği veya yerleşik tüm erişimli abonelik kullanıyorsanız, ürün kapsamında yapılandırılan ilkeler bu abonelikten gelen isteklere uygulanmaz.
Daha fazla bilgi için bkz.
GraphQL çözümleyici ilkeleri
API Management'ta GraphQL çözümleyicisi, GraphQL şemasındaki belirli bir işlem türü ve alanı kapsamındaki ilkeler kullanılarak yapılandırılır.
- API Management şu anda HTTP API, Cosmos DB veya Azure SQL veri kaynaklarını belirten GraphQL çözümleyicilerini desteklemektedir. Örneğin, bir HTTP veri kaynağına yönelik istek (ve isteğe bağlı olarak yanıt) belirtmek için öğeleri olan tek
http-data-source
bir ilke yapılandırın. - API, ürün veya tüm API'ler gibi diğer kapsamlardaki ilke tanımlarına çözümleyici ilkesi ekleyemezsiniz. Ayrıca diğer kapsamlarda yapılandırılmış ilkeleri devralmaz.
- Ağ geçidi, ilke yürütme işlem hattında yapılandırılan
inbound
vebackend
ilkelerden sonra çözümleyici kapsamlı bir ilkeyi değerlendirir.
Daha fazla bilgi için bkz . GraphQL çözümleyicisini yapılandırma.
Azure'da Microsoft Copilot kullanarak ilke oluşturma konusunda yardım alma (önizleme)
Azure'da Microsoft Copilot (önizleme), Azure API Management için ilke yazma özellikleri sağlar. Söz dizimini bilmeden belirli gereksinimlerinize uyan veya size açıklanmış ilkeleri önceden yapılandırmış ilkeler oluşturmak için Azure'da Api Management'ın ilke düzenleyicisi bağlamında Copilot kullanın.
Azure'da Copilot'tan ilke tanımları oluşturmasını isteyebilir, ardından sonuçları ilke düzenleyicisine kopyalayabilir ve gerekli ayarlamaları yapabilirsiniz. Farklı seçenekler hakkında içgörü elde etmek, sağlanan ilkeyi değiştirmek veya zaten sahip olduğunuz ilkeyi netleştirmek için sorular sorun. Daha fazla bilgi edinin
Örnekler
Farklı kapsamlarda belirtilen ilkeleri uygulama
Genel düzeyde bir ilkeniz ve API için yapılandırılmış bir ilkeniz varsa, söz konusu API her kullanıldığında her iki ilke de uygulanabilir. API Management, öğesi aracılığıyla birleştirilmiş ilke deyimlerinin belirlenimci bir şekilde sıralanmasına base
olanak tanır.
API kapsamında örnek ilke tanımı:
<policies>
<inbound>
<cross-domain />
<base />
<find-and-replace from="xyz" to="abc" />
</inbound>
</policies>
Yukarıdaki örnek ilke tanımında:
- deyimi
cross-domain
önce yürütülür. - İlke,
find-and-replace
daha geniş bir kapsamdaki tüm ilkelerden sonra yürütülür.
Not
ÖĞESINI API kapsamında kaldırırsanız base
, yalnızca API kapsamında yapılandırılan ilkeler uygulanır. Ne ürün ne de genel kapsam ilkeleri uygulanmaz.
İstekleri değiştirmek için ilke ifadelerini kullanma
Aşağıdaki örnek, gelen isteğe kullanıcı verileri eklemek için ilke ifadelerini ve set-header
ilkeyi kullanır. Eklenen üst bilgi, istekteki abonelik anahtarıyla ilişkilendirilmiş kullanıcı kimliğini ve isteği işleyen ağ geçidinin barındırıldığı bölgeyi içerir.
<policies>
<inbound>
<base />
<set-header name="x-request-context-data" exists-action="override">
<value>@(context.User.Id)</value>
<value>@(context.Deployment.Region)</value>
</set-header>
</inbound>
</policies>
İlgili içerik
İlkelerle çalışma hakkında daha fazla bilgi için bkz: