Azure Spring Apps Kurumsal planıyla VMware Spring Cloud Gateway yol filtrelerini kullanma
Not
Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.
Bu makale şunlar için geçerlidir:❌ Temel/Standart ✔️ Kurumsal
Bu makalede, istekleri uygulamalarınıza yönlendirmek için Azure Spring Apps Enterprise planıyla VMware Spring Cloud Gateway yol filtrelerinin nasıl kullanılacağı açıklanmaktadır.
VMware Spring Cloud Gateway, açık kaynak Spring Cloud Gateway projesini temel alan ticari bir VMware Tanzu bileşenidir. Spring Cloud Gateway, API geliştirme ekipleri için çoklu oturum açma (SSO), erişim denetimi, hız sınırlama, dayanıklılık, güvenlik ve daha fazlası gibi çapraz sorunlarla ilgilenir. Modern bulut yerel desenlerini ve API geliştirme için seçtiğiniz herhangi bir programlama dilini kullanarak API teslimini hızlandırabilirsiniz.
VMware Spring Cloud Gateway aşağıdaki özellikleri içerir:
- Dinamik yönlendirme yapılandırması, yeniden derleme olmadan uygulanabilen ve değiştirilebilen tek tek uygulamalardan bağımsızdır.
- Yetkili JSON Web Belirteci (JWT) talebi uygulama hizmetlerine taşımak için ticari API yol filtreleri.
- İstemci sertifikası yetkilendirmesi.
- Hız sınırlama yaklaşımları.
- Devre kesici yapılandırması.
- HTTP Temel Kimlik Doğrulaması kimlik bilgileri aracılığıyla uygulama hizmetlerine erişim desteği.
VMware Tanzu için API Portalı ile tümleştirmek üzere VMware Spring Cloud Gateway, tüm yol yapılandırma eklemeleri veya değişikliklerden sonra otomatik olarak OpenAPI sürüm 3 belgeleri oluşturur. Daha fazla bilgi için bkz . VMware Tanzu için API Portalını kullanma.
Önkoşullar
- Spring Cloud Gateway'in etkinleştirildiği, önceden sağlanmış bir Azure Spring Apps Kurumsal planı hizmet örneği. Daha fazla bilgi için bkz . Hızlı Başlangıç: Kurumsal planı kullanarak uygulamaları derleme ve Azure Spring Apps'e dağıtma.
- Azure CLI sürüm 2.0.67 veya üzeri. Azure Spring Apps uzantısını yüklemek için aşağıdaki komutu kullanın:
az extension add --name spring
.
Filtreleri kullanma
Spring Cloud Gateway yapılandırmanızda filtreleri kullanarak gelen istek veya bir yol yapılandırmasına giden yanıt üzerinde işlem yapabilirsiniz.
Örneğin, http üst bilgisi eklemek veya yetkilendirme belirtecine göre erişimi reddetmek için filtre kullanabilirsiniz.
açık kaynak filtreleri kullanma
Spring Cloud Gateway OSS, rotalar için filtre oluşturmak için kullanılan birkaç GatewayFilter
fabrika içerir. Aşağıdaki bölümlerde bu fabrikalar açıklanmaktadır.
AddRequestHeader
Fabrika, AddRequestHeader
tüm eşleşen istekler için aşağı akış isteğinin üst bilgilerine bir üst bilgi ekler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
value
Aşağıdaki örnek, tüm eşleşen istekler için aşağı akış isteğinin üst bilgilerine üst bilgi X-Request-red:blue
ekleyen bir AddRequestHeader
fabrika yapılandırır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
Fabrikanın AddRequestHeader
bir yol veya konakla eşleştirmek için kullanılan URI değişkenlerine erişimi vardır. Değerde URI değişkenlerini kullanabilirsiniz ve değişkenler çalışma zamanında genişletilir.
Aşağıdaki örnekte değişken kullanan bir AddRequestHeader
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddRequestHeader=X-Request-red, blue-{segment}"
]
}
]
AddRequestHeadersIfNotPresent
Fabrika, AddRequestHeadersIfNotPresent
özgün istekte yoksa üst bilgileri ekler.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
headers
: Anahtar-değer çiftlerinin virgülle ayrılmış listesi (üst bilgi adı, üst bilgi değeri).
Aşağıdaki örnekte fabrika AddRequestHeadersIfNotPresent
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
AddRequestParameter
Fabrika, AddRequestParameter
tüm eşleşen istekler için aşağı akış isteğinin sorgu dizesine bir parametre ekler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
value
Aşağıdaki örnek, tüm eşleşen istekler için aşağı akış isteğinin sorgu dizesine parametre ekleyen bir AddRequestParameter
red=blue
fabrika yapılandırır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestParameter=red, blue"
]
}
]
Fabrikanın AddRequestParameter
bir yol veya konakla eşleştirmek için kullanılan URI değişkenlerine erişimi vardır. Değerde URI değişkenlerini kullanabilirsiniz ve değişkenler çalışma zamanında genişletilir.
Aşağıdaki örnekte değişken kullanan bir AddRequestParameter
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddRequestParameter=foo, bar-{segment}"
]
}
]
AddResponseHeader
Fabrika, AddResponseHeader
tüm eşleşen istekler için aşağı akış yanıtının üst bilgilerine bir üst bilgi ekler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
value
Aşağıdaki örnek, tüm eşleşen istekler için aşağı akış yanıtının üst bilgilerine üst bilgi ekleyen bir AddResponseHeader
X-Response-Red:Blue
fabrika yapılandırır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddResponseHeader=X-Response-Red, Blue"
]
}
]
Fabrikanın AddResponseHeader
bir yol veya konakla eşleştirmek için kullanılan URI değişkenlerine erişimi vardır. Değerde URI değişkenlerini kullanabilirsiniz ve değişkenler çalışma zamanında genişletilir.
Aşağıdaki örnekte değişken kullanan bir AddResponseHeader
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddResponseHeader=foo, bar-{segment}"
]
}
]
CircuitBreaker
Fabrika CircuitBreaker
, yolları bir devre kesiciye sarmalar.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
: Devre kesici adı.fallbackUri
: Yerel yol veya dış işleyici olabilecek yeniden yönlendirme URI'si.status codes
(isteğe bağlı): Sayı veya metin biçiminde eşleşecek durum kodlarının iki nokta üst üste ayrılmış listesi.failure rate
(isteğe bağlı): Devre kesicinin açıldığı eşik. Varsayılan değer %50'dir.duration
(isteğe bağlı): Yeniden kapatmadan önce bekleme süresi. Varsayılan değer 60 saniyedir.
Aşağıdaki örnekte fabrika CircuitBreaker
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
]
}
]
DeDupeResponseHeader
Fabrika, DeDupeResponseHeader
yanıt üst bilgilerinin yinelenen değerlerini kaldırır.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
: Üst bilgi adlarının boşlukla ayrılmış listesi.strategy
(isteğe bağlı): Kabul edilen değerler ,RETAIN_LAST
veRETAIN_UNIQUE
şeklindedirRETAIN_FIRST
. Varsayılan değer şudur:RETAIN_FIRST
.
Aşağıdaki örnek, her iki değer Access-Control-Allow-Credentials
de ağ geçidi CORS mantığı ve Access-Control-Allow-Origin
aşağı akış mantığı tarafından eklendiğinde yinelenen ve yanıt üst bilgilerini kaldıran bir DeDupeResponseHeader
fabrika yapılandırır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"DeDupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin"
]
}
]
FallbackHeaders
Fabrika, FallbackHeaders
üst bilgisine devre kesici özel durumu ekler. Bu filtre, filtrenin CircuitBreaker
başka bir yolda kullanılmasını gerektirir.
Bu fabrika için parametre yok.
Aşağıdaki örnek özel durum türü, ileti ve (varsa) kök neden özel durum türü ve filtrenin FallbackHeaders
isteğe eklediği ileti ile bir FallbackHeaders
fabrika yapılandırmaktadır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
]
},
{
"predicates": [
"Path=/inCaseOfFailureUseThis"
],
"filters": [
"FallbackHeaders"
]
}
]
Aşağıdaki parametrelerin değerlerini ayarlayarak yapılandırmadaki üst bilgilerin adlarının üzerine yazabilirsiniz (varsayılan değerleriyle belirtilir):
executionExceptionTypeHeaderName
("Execution-Exception-Type")executionExceptionMessageHeaderName
("Yürütme-Özel Durum-İletisi")rootCauseExceptionTypeHeaderName
("Kök-Neden-Özel Durum-Türü")rootCauseExceptionMessageHeaderName
("Kök-Neden-Özel Durum-İletisi")
JSONToGRPC
Fabrika, JSONToGRPCFilter
bir JSON yükünü gRPC isteğine dönüştürür.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
protoDescriptor
: Proto tanımlayıcı dosyası.
Aşağıdaki örnekte gösterildiği gibi bayrağını --descriptor_set_out
kullanarak protoc
ve belirterek bu dosyayı oluşturabilirsiniz:
protoc --proto_path=src/main/resources/proto/ \
--descriptor_set_out=src/main/resources/proto/hello.pb \
src/main/resources/proto/hello.proto
Not
streaming
parametresi desteklenmez.
Aşağıdaki örnek, çıkışını protoc
kullanarak bir JSONToGRPCFilter
fabrika yapılandırır:
[
{
"predicates": [
"Path=/json/**"
],
"filters": [
"JsonToGrpc=file:proto/hello.pb,file:proto/hello.proto,HelloService,hello"
]
}
]
LocalResponseCache
Fabrika, LocalResponseCache
genel önbellek etkinleştirildiğinde belirli yollar için yerel yanıt önbelleği yapılandırmasını geçersiz kılar.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
size
: Önbellek çıkarma başlamadan önce bu yol için önbellek girdilerinin izin verilen en büyük boyutu (KB, MB ve GB cinsinden).timeToLive
: Süre dolmadan önce önbellek girişinin izin verilen kullanım ömrü. Saniyeler,m
dakikalar veyah
saatler için süre sonekinis
kullanın.
Aşağıdaki örnekte fabrika LocalResponseCache
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"LocalResponseCache=3m,1MB"
]
}
]
MapRequestHeader
Fabrika, MapRequestHeader
gelen HTTP isteğinin üst bilgisinden güncelleştirilmiş değerlerle aşağı akış isteğine bir üst bilgi ekler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
fromHeader
toHeader
Bu fabrika yeni bir adlandırılmış üst bilgi ()toHeader
oluşturur ve değer gelen HTTP isteğinden var olan adlandırılmış üst bilgiden (fromHeader
) ayıklanır. Giriş üst bilgisi yoksa, filtrenin hiçbir etkisi olmaz. Yeni adlandırılmış üst bilgi zaten varsa, değerleri yeni değerlerle genişletilir.
Aşağıdaki örnek, üst bilgiyi gelen HTTP isteğinin X-Request-Red:<values>
üst bilgisinden güncelleştirilmiş değerlerle aşağı akış isteğine Blue
ekleyen bir MapRequestHeader
fabrika yapılandırır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"MapRequestHeader=Blue, X-Request-Red"
]
}
]
PrefixPath
Fabrika, PrefixPath
tüm isteklerin yoluna bir ön ek ekler.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
prefix
Aşağıdaki örnek, tüm isteklerin yoluna ön ek /api
ekleyen bir PrefixPath
fabrika yapılandırarak adresine bir istek gönderilmesini /catalog
/api/catalog
sağlar:
[
{
"predicates": [
"Path=/catalog/**"
],
"filters": [
"PrefixPath=/api"
]
}
]
PreserveHostHeader
Fabrika, PreserveHostHeader
özgün ana bilgisayar üst bilgisinin mi yoksa HTTP istemcisi tarafından belirlenen ana bilgisayar üst bilgisinin mi gönderileceğini belirlemek için yönlendirme filtresinin incelediği bir istek özniteliği ayarlar.
Bu fabrika için parametre yok.
Aşağıdaki örnekte fabrika PreserveHostHeader
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"PreserveHostHeader"
]
}
]
RedirectTo
Fabrika, RedirectTo
özgün URL'ye bir yeniden yönlendirme ekler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
status
: 300 serisi http kodunu yeniden yönlendirir, örneğin301
.url
: Üst bilginin değeriLocation
. Geçerli bir URI olmalıdır. Göreli yeniden yönlendirmeler için rota tanımınızın URI'sini kullanmanızuri: no://op
gerekir.
Aşağıdaki örnek, yeniden yönlendirme gerçekleştirmek için üst bilgi içeren bir Location:https://acme.org
durum 302
gönderen bir fabrikayı yapılandırıyorRedirectTo
:
[
{
"uri": "https://example.org",
"filters": [
"RedirectTo=302, https://acme.org"
]
}
]
RemoveJsonAttributesResponseBody
Fabrika JSON RemoveJsonAttributesResponseBody
özniteliklerini ve değerlerini JSON yanıt gövdelerinden kaldırır.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
attribute names
: JSON yanıtından kaldırılacak öznitelik adlarının virgülle ayrılmış listesi.delete recursively
(isteğe bağlı, boole): Öznitelikleri yalnızca kök düzeyinde (false
) veya özyinelemeli olarak (true
) kaldıran bir yapılandırmadır. Varsayılan değer şudur:false
.
Aşağıdaki örnekte fabrika RemoveJsonAttributesResponseBody
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveJsonAttributesResponseBody=origin,foo,true"
]
}
]
RemoveRequestHeader
Fabrika, RemoveRequestHeader
aşağı akış isteğinden bir üst bilgi kaldırır.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
name
: Kaldırılacak üst bilginin adı.
Aşağıdaki listede, alt akış gönderilmeden önce üst bilgiyi kaldıran X-Request-Foo
bir RemoveRequestHeader
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveRequestHeader=X-Request-Foo"
]
}
]
RemoveRequestParameter
Fabrika, RemoveRequestParameter
aşağı akış gönderilmeden önce bir parametreyi kaldırır.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
name
: Kaldırılacak sorgu parametresinin adı.
Aşağıdaki örnek, aşağı akış gönderilmeden önce parametresini red
kaldıran bir RemoveRequestParameter
fabrika yapılandırır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveRequestParameter=red"
]
}
]
RemoveResponseHeader
Fabrika, RemoveResponseHeader
ağ geçidi istemcisine döndürülmeden önce yanıttan bir üst bilgi kaldırır.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
name
: Kaldırılacak üst bilginin adı.
Aşağıdaki listede, ağ geçidi istemcisine X-Response-Foo
döndürülmeden önce yanıttan üst bilgiyi kaldıran bir RemoveResponseHeader
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveResponseHeader=X-Response-Foo"
]
}
]
RequestHeaderSize
fabrika RequestHeaderSize
, istek üst bilgisinin boyutunu belirler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
maxSize
: anahtar ve değer de dahil olmak üzere istek üst bilgisinin izin verdiği maksimum veri boyutu.errorHeaderName
: Hata iletisi içeren yanıt üst bilgisinin adı. Varsayılan olarak, yanıt üst bilgisinin adı şeklindedirerrorMessage
.
Aşağıdaki listede, herhangi bir istek üst bilgisinin boyutu 1000 bayttan büyükse durum 431
gönderen bir RequestHeaderSize
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RequestHeaderSize=1000B"
]
}
]
RewriteLocationResponseHeader
Fabrika RewriteLocationResponseHeader
, genellikle arka uca özgü ayrıntılardan kurtulmak için yanıt üst bilgisinin değerini Location
değiştirir.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
stripVersionMode
: Bu parametre aşağıdaki olası değerlere sahiptir:NEVER_STRIP
,AS_IN_REQUEST
veALWAYS_STRIP
. Varsayılan değer şudur:AS_IN_REQUEST
.NEVER_STRIP
: Özgün istek yolu sürüm içermese bile sürüm kaldırılamaz.AS_IN_REQUEST
: Sürüm yalnızca özgün istek yolu sürüm içermiyorsa çıkarılır.ALWAYS_STRIP
: Özgün istek yolu sürüm içerse bile sürüm her zaman kaldırılır.
hostValue
: Bu parametre, sağlandığında yanıtLocation
üst bilgisininhost:port
bölümünü değiştirmek için kullanılır. Sağlanmadıysa, istek üst bilgisininHost
değeri kullanılır.protocolsRegex
: Protokol adının eşleştirildiği geçerli bir regexString
. Eşleştirilmezse, filtre çalışmaz. Varsayılan değer şudur:http|https|ftp|ftps
.locationHeaderName
Aşağıdaki listede fabrika RewriteLocationResponseHeader
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,"
]
}
]
Bu örnekte, bir istek değeri POST
api.example.com/some/object/name
Location
için yanıt üst bilgisi değeri object-service.prod.example.net/v2/some/object/id
olarak api.example.com/some/object/id
yeniden yazılır.
Yeniden YazmaYolu
Fabrika, RewritePath
istek yolunu yeniden yazmak için esnek bir yol için Java normal ifadelerini kullanır.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
regexp
replacement
Aşağıdaki listede fabrika RewritePath
yapılandırılır:
[
{
"predicates": [
"Path=/red/**"
],
"filters": [
"RewritePath=/red/?(?<segment>.*), /$\\{segment}"
]
}
]
Bu örnekte, bir istek yolu /red/blue
için, bu yapılandırma aşağı akış isteği yapmadan önce yolunu /blue
olarak ayarlar.
RewriteResponseHeader
Fabrika, RewriteResponseHeader
yanıt üst bilgisi değerini yeniden yazmak için esnek bir yol için Java normal ifadelerini kullanır.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
regexp
replacement
Aşağıdaki örnekte fabrika RewriteResponseHeader
yapılandırılır:
[
{
"predicates": [
"Path=/red/**"
],
"filters": [
"RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***"
]
}
]
Bu örnekte, üst bilgi değeri /42?user=ford&password=omg!what&flag=true
için, aşağı akış isteğinde bulunıldıktan sonra yapılandırma olarak /42?user=ford&password=***&flag=true
ayarlanır.
SetPath
Fabrika, SetPath
yolun şablonlu kesimlerine izin vererek istek yolunu işlemek için basit bir yol sunar. Bu filtre Spring Framework'teki URI şablonlarını kullanır ve birden çok eşleşen kesime izin verir.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
template
Aşağıdaki örnekte fabrika SetPath
yapılandırılır:
[
{
"predicates": [
"Path=/red/{segment}"
],
"filters": [
"SetPath=/{segment}"
]
}
]
Bu örnekte, bir istek yolu /red/blue
için, bu yapılandırma aşağı akış isteği yapmadan önce yolunu /blue
olarak ayarlar.
SetRequestHeader
Fabrika, SetRequestHeader
tüm üst bilgileri belirtilen adla değiştirir (eklemek yerine).
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
value
Aşağıdaki listede fabrika SetRequestHeader
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"SetRequestHeader=X-Request-Red, Blue"
]
}
]
Bu örnekte aşağı akış sunucusu ile X-Request-Red:1234
yanıt verdi ve yerine ile değiştirildi X-Request-Red:Blue
.
Fabrikanın SetRequestHeader
bir yol veya konakla eşleştirmek için kullanılan URI değişkenlerine erişimi vardır. Değerde URI değişkenlerini kullanabilirsiniz ve değişkenler çalışma zamanında genişletilir.
Aşağıdaki örnekte değişken kullanan bir SetRequestHeader
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"SetRequestHeader=foo, bar-{segment}"
]
}
]
SetResponseHeader
Fabrika, SetResponseHeader
tüm üst bilgileri belirtilen adla değiştirir (eklemek yerine).
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
name
value
Aşağıdaki listede fabrika SetResponseHeader
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"SetResponseHeader=X-Response-Red, Blue"
]
}
]
Bu örnekte aşağı akış sunucusu ile X-Response-Red:1234
yanıt verdi ve yerine ile değiştirildi X-Response-Red:Blue
.
Fabrikanın SetResponseHeader
bir yol veya konakla eşleştirmek için kullanılan URI değişkenlerine erişimi vardır. Değerde URI değişkenlerini kullanabilirsiniz ve değişkenler çalışma zamanında genişletilir.
Aşağıdaki örnekte değişken kullanan bir SetResponseHeader
fabrika yapılandırılır:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"SetResponseHeader=foo, bar-{segment}"
]
}
]
Setstatus
Fabrika, SetStatus
sunucu isteğinin yanıt durumunu yapılandırıyor.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
status
: gibi bir tamsayı değeri veya gibi sabit listesiNOT_FOUND
dize gösterimini oluşturabilen geçerli bir SpringHttpStatus
değeri404
.
Aşağıdaki listede fabrika SetStatus
yapılandırılır:
[
{
"predicates": [
"Path=/experimental/**"
],
"filters": [
"SetStatus=UNAUTHORIZED"
]
},
{
"predicates": [
"Path=/unknown/**"
],
"filters": [
"SetStatus=401"
]
}
]
StripPrefix
Fabrika, StripPrefix
istekten ön eki aşağı akış göndermeden önce kaldırır.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
parts
: aşağı akış göndermeden önce istekten çıkarılası yoldaki parça sayısı. Varsayılan değer 1 şeklindedir.
Aşağıdaki örnekte fabrika StripPrefix
yapılandırılır:
[
{
"predicates": [
"Path=/name/**"
],
"filters": [
"StripPrefix=2"
]
}
]
Bu örnekte ağ geçidi üzerinden adresine /name/blue/red
bir istek yapılır. için yapılan nameservice
istek olarak nameservice/red
görünür.
Yeniden dene
Fabrika Retry
, denenen yeniden deneme sayısını belirler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
retries
: Denenmesi gereken yeniden deneme sayısı.statuses
: kullanılarakorg.springframework.http.HttpStatus
temsil edilen, yeniden denenmesi gereken HTTP durum kodları.methods
: kullanılarakorg.springframework.http.HttpMethod
temsil edilen, yeniden denenmesi gereken HTTP yöntemleri.series
: kullanılarakorg.springframework.http.HttpStatus.Series
temsil edilen, yeniden denenecek durum kodları serisi.exceptions
: Yeniden denenmesi gereken oluşturulan özel durumların listesi.backoff
: Yeniden denemeler için yapılandırılan üstel geri alma. Yeniden denemeler, yinelemenin olduğun
geri alma aralığındanfirstBackoff * (factor ^ n)
sonra gerçekleştirilir. YapılandırılırsamaxBackoff
, uygulanan maksimum geri alma işlemi ilemaxBackoff
sınırlıdır. true isebasedOnPreviousValue
,backoff
kullanılarak hesaplanırprevBackoff * factor
.
Etkinleştirildiğinde filtre için Retry
aşağıdaki varsayılanlar yapılandırılır:
retries
: üç kez.series
: 5XX serisi.methods
: GET yöntemi.exceptions
:IOException
veTimeoutException
.backoff
:Devre dışı.
Aşağıdaki örnekte fabrika Retry
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Retry=3,INTERNAL_SERVER_ERROR,GET,10ms,50ms,2,false"
]
}
]
İstek Boyutu
fabrika, RequestSize
istek boyutu izin verilen sınırdan büyük olduğunda bir isteğin aşağı akış hizmetine ulaşmasını kısıtlayabilir.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
maxSize
DataSize
: Değerlerin sayı olarak tanımlandığı ve ardından veyaMB
gibiKB
isteğe bağlıDataUnit
bir sonek eklendiği bir tür. Varsayılan sonek değeri bayt içindirB
. İsteğin bayt cinsinden tanımlanan izin verilen boyut sınırıdır.
Aşağıdaki örnekte fabrika RequestSize
yapılandırılır:
[
{
"predicates": [
"Path=/upload"
],
"filters": [
"RequestSize=5000000"
]
}
]
Bu örnekte, istek boyut nedeniyle reddedildiğinde fabrika yanıt RequestSize
durumunu 413 Payload Too Large
başka bir üst bilgiyle errorMessage
olarak ayarlar.
Aşağıdaki örnekte bir gösterilmektedir errorMessage
:
errorMessage : Request size is larger than permissible limit. Request size is 6.0 MB where permissible limit is 5.0 MB
TokenRelay
Fabrika, TokenRelay
aşağı akış kaynaklarına bir OAuth2
erişim belirteci iletir. Bu filtre, açık bir boolean
filtre yerine yol tanımında bir değer olarak yapılandırılır.
Aşağıdaki örnekte fabrika TokenRelay
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"tokenRelay": true
}
]
Ticari filtreleri kullanma
Kubernetes için Spring Cloud Gateway birçok özel GatewayFilter
fabrika da sağlar. Aşağıdaki bölümlerde bu fabrikalar açıklanmaktadır.
AllowedRequestCookieCount
Fabrika, AllowedRequestCookieCount
tanımlama bilgileri sayısına bağlı olarak eşleşen bir isteğin devam etme izni olup olmadığını belirler.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
amount
: İzin verilen tanımlama bilgilerinin sayısı.
Aşağıdaki örnekte fabrika AllowedRequestCookieCount
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestCookieCount=2"
]
}
]
AllowedRequestHeadersCount
Fabrika, AllowedRequestHeadersCount
üst bilgi sayısına göre eşleşen bir isteğin devam etme izni olup olmadığını belirler.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
amount
: İzin verilen üst bilgi sayısı.
Aşağıdaki örnekte fabrika AllowedRequestHeadersCount
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestHeadersCount=4"
]
}
]
AllowedRequestQueryParamsCount
Fabrika, AllowedRequestQueryParamsCount
sayı sorgusu parametrelerine göre eşleşen bir isteğin devam etme izni olup olmadığını belirler.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
amount
: İzin verilen parametre sayısı.
Aşağıdaki örnekte fabrika AllowedRequestQueryParamsCount
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestQueryParamsCount=3"
]
}
]
Basicauth
Fabrika isteklere BasicAuth
bir BasicAuth
Authorization
üst bilgi ekler.
Bu fabrika için parametre yok.
Aşağıdaki örnekte fabrika BasicAuth
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"BasicAuth"
]
}
]
ClaimHeader
Fabrika, ClaimHeader
bir JWT talebindeki verileri HTTP üst bilgisine kopyalar.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
Claim name
: Geçecek talebin büyük/küçük harfe duyarlı adı.Header name
: HTTP üst bilgisinin adı.
Aşağıdaki örnekte fabrika ClaimHeader
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"ClaimHeader=sub,X-Claim-Sub"
]
}
]
ClientCertificateHeader
Fabrika üst ClientCertificateHeader
bilgi sertifikasını X-Forwarded-Client-Cert
doğrular.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
domain pattern
X-Forwarded-Client-Cert
: Kubernetes'in istemci sertifikasının CA'sını tanıma yeteneğine göre değer.certificate fingerprint
(isteğe bağlı): TLS/SSL sertifikası parmak izi.
Aşağıdaki örnekte fabrika ClientCertificateHeader
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"ClientCertificateHeader=*.example.com,sha-1:aa:bb:00:99"
]
}
]
Cors
Fabrika, Cors
cors doğrulamalarını bir rotada etkinleştirir.
Bu fabrika, CORS seçenekleri için anahtar-değer çiftleri olarak düzenlenmiş aşağıdaki yapılandırma parametrelerini kabul eder:
allowedOrigins
allowedMethods
allowedHeaders
maxAge
allowCredentials
allowedOriginPatterns
Aşağıdaki örnekte fabrika Cors
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Cors=[allowedOrigins:https://origin-1,allowedMethods:GET;POST;DELETE,allowedHeaders:*,maxAge:400,allowCredentials:true,allowedOriginPatterns:https://*.test.com:8080]"
]
}
]
JsonToXml
Fabrika, JsonToXml
JSON yanıt gövdesini XML yanıt gövdesine dönüştürür.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
wrapper
: Geçerli XML oluşturmak için başka bir kök etiket gerekiyorsa XML yanıtının kök etiket adı. Varsayılan değer şudur:response
.
Aşağıdaki örnekte fabrika JsonToXml
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"JsonToXml=custom-response"
]
}
]
RateLimit
Fabrika, RateLimit
istek hacmine göre eşleşen bir isteğin devam etme izni olup olmadığını belirler.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
request limit
: Pencere sırasında kabul edilen en fazla istek sayısı.window duration
: Milisaniye cinsinden pencere süresi. Alternatif olarak, süreyi saniye, dakika veya saat cinsinden belirtmek için ,m
veyah
soneklerini kullanabilirsinizs
.partition source
(isteğe bağlı): Bölüm anahtarının (claim
,header
veyaIPs
) konumu.partition key
(isteğe bağlı): İstek sayaçlarını bölümlendirmek için kullanılan değer.
Aşağıdaki örnekte fabrika RateLimit
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RateLimit=1,10s"
]
}
]
Aşağıdaki örneklerde diğer RateLimit
yapılandırmalar gösterilmektedir:
RateLimit=1,10s
RateLimit=1,10s,{claim:client_id}
RateLimit=1,10s,{header:client_id}
RateLimit=2,10s,{IPs:2;127.0.0.1;192.168.0.1}
RestrictRequestHeaders
Fabrika, RestrictRequestHeaders
üst bilgilere göre eşleşen bir isteğin devam etme izni olup olmadığını belirler.
Büyük/küçük harfe duyarlı headerList
olmayan bir HTTP üst bilgisi varsa, istemcisine bir yanıtı 431 Forbidden error
döndürülür.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
headerList
: İzin verilen üst bilgilerin adlarının büyük/küçük harfe duyarsız listesi.
Aşağıdaki örnekte fabrika RestrictRequestHeaders
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RestrictRequestHeaders=Content-Type,x-request-temp"
]
}
]
RewriteAllResponseHeaders
Fabrika aynı RewriteAllResponseHeaders
anda birden çok yanıt üst bilgisini yeniden yazar.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
pattern to match
: Üst bilgi değerleriyle eşleşecek normal ifade.replacement
: Değiştirme değeri.
Aşağıdaki örnekte fabrika RewriteAllResponseHeaders
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteAllResponseHeaders=\\d,0"
]
}
]
RewriteResponseBody
Fabrika, RewriteResponseBody
yanıtın gövdesini değiştirir.
Bu fabrika, her çiftin formu pattern to match:replacement
kabul ettiği virgülle ayrılmış anahtar-değer çiftleri listesi olarak düzenlenmiş aşağıdaki yapılandırma parametrelerini kabul eder:
pattern to match
: Yanıt gövdesindeki metinle eşleşecek normal ifade.replacement
: Değiştirme değeri.
Aşağıdaki örnekte fabrika RewriteResponseBody
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteResponseBody=foo:bar,/path-one/:/path-two/"
]
}
]
RewriteJsonAttributesResponseBody
Fabrika, RewriteJsonAttributesResponseBody
gösterimi kullanarak JSONPath
JSON özniteliklerini yeniden yazar.
Bu fabrika, her çiftin formu jsonpath:replacement
kabul ettiği virgülle ayrılmış anahtar-değer çiftleri listesi olarak düzenlenmiş aşağıdaki yapılandırma parametrelerini kabul eder:
jsonpath
: YanıtJSONPath
gövdesiyle eşleşecek ifade.replacement
: Değiştirme değeri.
Aşağıdaki örnekte fabrika RewriteJsonAttributesResponseBody
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteJsonAttributesResponseBody=slides[1].title:Welcome,date:11-11-2022"
]
}
]
Roller
Fabrika, Roles
yapılandırılan rollerden birini içeren istekleri yetkilendirir.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
roles
: Yetkili rollerin virgülle ayrılmış listesi.
Aşağıdaki örnekte fabrika Roles
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Roles=role_01,role_02"
]
}
]
Kapsamlar
Fabrika, Scopes
yapılandırılan OAuth
kapsamlardan birini içeren istekleri yetkilendirir.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
scopes
: YetkiliOAuth
kapsamların virgülle ayrılmış listesi.
Aşağıdaki örnekte fabrika Scopes
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Scopes=api.read,api.write,user"
]
}
]
StoreIpAddress
Fabrika StoreIPAddress
, yalnızca uzantı geliştirme için ve uygulama bağlamında kullanılır.
Bu fabrika aşağıdaki yapılandırma parametresini kabul eder:
attribute name
: IP'yi exchange özniteliği olarak depolamak için kullanılan ad.
Aşağıdaki örnekte fabrika StoreIPAddress
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"StoreIpAddress=ip"
]
}
]
SSO oturum açma
Geçerli SSO login
bir yetkilendirme belirteci yoksa fabrika kimlik doğrulamasına yönlendirir. Bu fabrika, açık bir boolean
filtre yerine yol tanımında bir değer olarak yapılandırılır.
Aşağıdaki örnekte fabrika SSO login
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"ssoEnabled": true
}
]
StoreHeader
Fabrika, StoreHeader
uygulama bağlamında bir üst bilgi değeri depolar. Bu filtre yalnızca uzantı geliştirme için kullanılır.
Bu fabrika aşağıdaki yapılandırma parametrelerini kabul eder:
headers
: Denetlenecek üst bilgilerin listesi. Bulunan ilki kullanılır.attribute name
: Üst bilgi değerini exchange özniteliği olarak depolamak için kullanılan ad.
Aşağıdaki örnekte fabrika StoreHeader
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"StoreHeader=x-tracing-header,custom-id,x-custom-id,tracingParam"
]
}
]
XmlToJson
Fabrika, XmlToJson
XML yanıt gövdesini JSON yanıt gövdesine dönüştürür.
Bu fabrika için parametre yok.
Aşağıdaki örnekte fabrika XmlToJson
yapılandırılır:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"XmlToJson"
]
}
]