Azure İşlevleri'de HTTP uç noktasını özelleştirme
Bu makalede, Azure İşlevleri yüksek oranda ölçeklenebilir API'ler oluşturmanıza nasıl olanak sağladığını öğreneceksiniz. Azure İşlevleri, Node.js, C# gibi çeşitli dillerde uç nokta yazmayı kolaylaştıran yerleşik HTTP tetikleyicileri ve bağlamaları koleksiyonuyla birlikte gelir. Bu makalede, API tasarımınızdaki belirli eylemleri işlemek için bir HTTP tetikleyicisini özelleştireceksiniz. Api'nizi Azure İşlevleri Proxy'lerle tümleştirerek ve sahte API'ler ayarlayarak da büyütmeye hazırlayacaksınız. Bu görevler İşlevler sunucusuz işlem ortamı üzerinde gerçekleştirilir, bu nedenle kaynakları ölçeklendirme konusunda endişelenmeniz gerekmez; yalnızca API mantığınıza odaklanabilirsiniz.
Önemli
Azure İşlevleri proxy'ler, Azure İşlevleri çalışma zamanının 1.x ile 3.x sürümleri için eski bir özelliktir. İşlev uygulamalarınızı en son çalışma zamanı sürümüne başarıyla yükseltmeniz için proxy'ler için destek 4.x sürümünde yeniden etkinleştirilebilir. Mümkün olan en kısa sürede işlev uygulamalarınızı Azure API Management ile tümleştirmeye geçmeniz gerekir. API Management, İşlev tabanlı API'lerinizi tanımlamak, güvenliğini sağlamak, yönetmek ve gelire dönüştürmek için daha eksiksiz bir özellik kümesinden yararlanmanıza olanak tanır. Daha fazla bilgi için bkz. API Management tümleştirme.
İşlevler sürüm 4.x'te proxy desteğini yeniden etkinleştirmeyi öğrenmek için bkz. İşlevler v4.x'te proxy'leri yeniden etkinleştirme.
Önkoşullar
Bu konu başlığında, başlangıç noktası olarak Azure portalında ilk işlevinizi oluşturma bölümünde oluşturulan kaynaklar kullanılmaktadır. Daha önce yapmadıysanız işlev uygulamanızı oluşturmak için lütfen şu adımları uygulayın.
Sonuçta elde edilen işlev bu makalenin geri kalanında kullanılacaktır.
Azure'da oturum açma
Azure hesabınızla Azure portalında oturum açın.
HTTP işlevini özelleştirme
Varsayılan olarak, HTTP tetikleyici işleviniz herhangi bir HTTP yöntemini kabul etmek üzere yapılandırılır. Varsayılan URL'yi de kullanabilirsiniz. http://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>
Bu bölümde, işlevini yalnızca ile /api/hello
GET isteklerine yanıt verecek şekilde değiştireceksiniz.
Azure portalda işlevinize gidin. Soldaki menüden Tümleştirme'yi ve ardından Tetikleyici'nin altında HTTP (req) öğesini seçin.
Aşağıdaki tabloda belirtilen HTTP tetikleyici ayarlarını kullanın.
Alan Örnek değer Açıklama Yol şablonu hello Bu işlevi çağırmak için kullanılacak yolu belirler Yetkilendirme düzeyi Anonim İsteğe bağlı: İşlevinizi API anahtarı olmadan erişilebilir duruma getirir Seçili HTTP metotları GET Yalnızca seçilen HTTP yöntemlerinin bu işlevi çağırmak için kullanılmasını sağlar Genel bir ayar tarafından işlenmediğinden yol şablonuna temel yol ön ekini eklememişsinizdir
/api
.Kaydet’i seçin.
HTTP işlevlerini özelleştirme hakkında daha fazla bilgi için bkz. HTTP bağlamalarını Azure İşlevleri.
API’nizi test etme
Ardından yeni API yüzeyiyle nasıl çalıştığını görmek için işlevinizi test edin:
İşlev sayfasında, soldaki menüden Kod + Test'i seçin.
Üstteki menüden İşlev URL'sini al'ı seçin ve URL'yi kopyalayın. Şimdi yolunu kullandığını
/api/hello
onaylayın.URL'yi yeni bir tarayıcı sekmesine veya tercih ettiğiniz REST istemcisine kopyalayın.
Tarayıcılar varsayılan olarak GET kullanır.
URL'nizdeki sorgu dizesine parametreler ekleyin.
Örneğin,
/api/hello/?name=John
.Çalıştığını onaylamak için Enter tuşuna basın. "Hello John" yanıtını görmeniz gerekir.
İşlevin yürütüldüğünü onaylamak için uç noktayı başka bir HTTP yöntemiyle çağırmayı da deneyebilirsiniz. Bunu yapmak için cURL, Postman veya Fiddler gibi bir REST istemcisi kullanın.
Proxy'lere genel bakış
Sonraki bölümde API'nizi bir ara sunucu aracılığıyla ortaya geçireceksiniz. Azure İşlev Proxy'leri, istekleri başka kaynaklara yönlendirmenizi sağlar. HTTP tetikleyicisinde olduğu gibi bir HTTP uç noktası tanımlarsınız. Ancak, bu uç nokta çağrıldığında yürütülecek kod yazmak yerine, uzak bir uygulamanın URL'sini sağlarsınız. Bunun yapılması, istemcilerin kullanımı kolay olan tek bir API yüzeyinde birden çok API kaynağı oluşturmanıza olanak tanır. Bu, API'nizi mikro hizmet olarak oluşturmak istediğinizde kullanışlıdır.
Proxy, herhangi bir HTTP kaynağına yönlendirme yapabilir, örneğin:
- Azure İşlevleri
- Azure App Service'teki API uygulamaları
- Linux App Service'teki Docker kapsayıcıları
- Barındırılan herhangi bir API
Proxy'ler hakkında daha fazla bilgi için bkz. Azure İşlev Proxy'leri ile çalışma.
Not
Proxy'ler 1.x ile 3.x Azure İşlevleri sürümlerinde kullanılabilir.
İlk proxy'nizi oluşturma
Bu bölümde, genel API'nizin ön ucu olarak görev yapan yeni bir ara sunucu oluşturacaksınız.
Ön uç ortamını ayarlama
Ara sunucunuzu oluşturacağınız yeni bir işlev uygulaması oluşturmak için İşlev uygulaması oluşturma adımlarını yineleyin. Bu yeni uygulamanın URL'si API'miz için ön uç görevi görür ve daha önce düzenlediğiniz işlev uygulaması arka uç işlevi görür.
Portalda yeni ön uç işlev uygulamanıza gidin.
Yapılandırma'yı ve ardından Uygulama Ayarları'nı seçin.
Aşağı kaydırarak anahtar/değer çiftlerinin depolandığı Uygulama ayarları'na gidin ve anahtarıyla
HELLO_HOST
yeni bir ayar oluşturun. Değerini arka uç işlev uygulamanızın ana bilgisayarı olacak şekilde ayarların, örneğin:<YourBackendApp>.azurewebsites.net
. Bu değer, HTTP işlevinizi test ederken daha önce kopyaladığınız URL'nin bir parçasıdır. Bu ayarı yapılandırmanın ilerleyen bölümlerinde kullanacaksınız.Not
Proxy için sabit olarak yazılmış ortam bağımlılığı oluşmasını önleme amacıyla ana bilgisayar yapılandırması için uygulama ayarlarının kullanılması önerilir. Uygulama ayarlarını kullanarak proxy yapılandırmasını birden fazla ortamda kullanabilirsiniz ve bu durumda ortama özgü uygulama ayarları geçerli olur.
Kaydet’i seçin.
Ön uçta proxy oluşturma
Portalda ön uç işlev uygulamanıza geri dönün.
Sol taraftaki menüde Ara Sunucular'ı ve ardından Ekle'yi seçin.
Yeni Ara Sunucu sayfasında, aşağıdaki tabloda yer alan ayarları kullanın ve oluştur'u seçin.
Alan Örnek değer Açıklama Ad HelloProxy Yalnızca yönetim için kullanılan kolay ad Yol şablonu /api/remotehello Bu proxy'yi çağırmak için kullanılacak yolu belirler Arka uç URL'si https://%HELLO_HOST%/api/hello İsteğe proxy uygulanacak uç noktayı belirtir Azure İşlevleri Proxy'leri, yol şablonuna
/api
eklenmesi gereken temel yol ön ekini sağlamaz. Söz%HELLO_HOST%
dizimi, daha önce oluşturduğunuz uygulama ayarına başvurur. Çözümlenen URL, özgün işlevinize işaret edecektir.Proxy URL'sini kopyalayıp tarayıcıda veya sık kullandığınız HTTP istemcisiyle test ederek yeni proxy'nizi deneyin:
- Anonim bir işlev için şunu kullanın:
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies"
. - Yetkilendirmeli bir işlev için şunu kullanın:
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies"
.
- Anonim bir işlev için şunu kullanın:
Sahte API oluşturma
Ardından, çözümünüz için bir sahte API oluşturmak üzere bir ara sunucu kullanacaksınız. Bu ara sunucu, arka ucun tam olarak uygulanmasına gerek kalmadan istemci geliştirmenin ilerlemesine olanak tanır. Geliştirmenin ilerleyen bölümlerinde bu mantığı destekleyen ve proxy'nizi buna yönlendiren yeni bir işlev uygulaması oluşturabilirsiniz.
Bu sahte API'yi oluşturmak için bu kez App Service Düzenleyicisi'ni kullanarak yeni bir proxy oluşturacağız. Başlamak için portalda işlev uygulamanıza gidin. Platform özellikleri'ni seçin ve Geliştirme Araçları'nın altında App Service Düzenleyicisi'ni bulun. App Service Düzenleyicisi yeni bir sekmede açılır.
Sol gezinti bölmesinden proxies.json
öğesini seçin. Bu dosya, tüm proxy'lerinizin yapılandırmasını depolar. İşlevler dağıtım yöntemlerinden birini kullanırsanız, bu dosyayı kaynak denetiminde tutarsınız. Bu dosya hakkında daha fazla bilgi için bkz. Gelişmiş proxy yapılandırması.
Şimdiye kadar takip ettiyseniz, proxies.json dosyanız aşağıdaki gibi görünmelidir:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"HelloProxy": {
"matchCondition": {
"route": "/api/remotehello"
},
"backendUri": "https://%HELLO_HOST%/api/hello"
}
}
}
Ardından sahte API'nizi ekleyeceksiniz. proxies.json dosyanızı aşağıdaki kodla değiştirin:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"HelloProxy": {
"matchCondition": {
"route": "/api/remotehello"
},
"backendUri": "https://%HELLO_HOST%/api/hello"
},
"GetUserByName" : {
"matchCondition": {
"methods": [ "GET" ],
"route": "/api/users/{username}"
},
"responseOverrides": {
"response.statusCode": "200",
"response.headers.Content-Type" : "application/json",
"response.body": {
"name": "{username}",
"description": "Awesome developer and master of serverless APIs",
"skills": [
"Serverless",
"APIs",
"Azure",
"Cloud"
]
}
}
}
}
}
Bu kod özelliği GetUserByName
olmadan backendUri
yeni bir proxy ekler. Bu proxy başka bir kaynağı çağırmak yerine yanıt geçersiz kılma özelliğini kullanarak Proxy'lerden gelen varsayılan yanıtı değiştirir. İstek ve yanıt geçersiz kılmaları arka uç URL'si ile de kullanılabilir. Bu teknik, üst bilgileri, sorgu parametrelerini vb. değiştirmeniz gerekebilecek eski bir sisteme ara sunucu oluştururken kullanışlıdır. İstek ve yanıt geçersiz kılma işlemleri hakkında daha fazla bilgi için bkz. Proxy'lerde istekleri ve yanıtları değiştirme.
Sahte API'nizi test etmek için bir tarayıcı veya sık kullandığınız REST istemcisini kullanarak <YourProxyApp>.azurewebsites.net/api/users/{username}
uç noktasını çağırın. {username} yerine kullanıcı adını temsil eden bir dize değeri yazmayı unutmayın.
Sonraki adımlar
Bu makalede, Azure İşlevleri üzerinde API oluşturmayı ve özelleştirmeyi öğrendiniz. Ayrıca sahteler dahil olmak üzere birden fazla API'yi bir araya getirerek birleştirilmiş bir API yüzeyi oluşturmayı da öğrendiniz. Bu teknikleri kullanarak istediğiniz karmaşıklık düzeyinde API'ler derleyebilir ve tümünü Azure İşlevleri tarafından sunulan sunucusuz işlem modeli üzerinde çalıştırabilirsiniz.
API'nizi geliştirirken aşağıdaki konulara da başvurabilirsiniz: