Azure İşlevleri'de HTTP uç noktasını özelleştirme
Bu makalede, API tasarımınızdaki belirli eylemleri işlemek için bir HTTP tetikleyicisini özelleştirerek Azure İşlevleri ile yüksek oranda ölçeklenebilir API'ler oluşturmayı öğreneceksiniz. Azure İşlevleri, Node.js, C# ve daha fazlası gibi çeşitli dillerde uç nokta yazmayı kolaylaştıran yerleşik HTTP tetikleyicileri ve bağlamaları koleksiyonu içerir. Api'nizi Azure İşlevleri proxy'lerle tümleştirerek ve sahte API'ler ayarlayarak da büyütmeye hazırlanırsınız. Bu görevler İşlevler sunucusuz işlem ortamının üzerinde gerçekleştirildiğinden, kaynakları ölçeklendirme konusunda endişelenmeniz gerekmez. Bunun yerine 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çmelisiniz. 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ştirmesi.
İş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 makale, Başlangıç noktası olarak Azure portalında ilk işlevinizi oluşturma bölümünde oluşturulan kaynakları kullanır. Daha önce yapmadıysanız işlev uygulamanızı oluşturmak için bu adımları uygulayın.
Bu işlev uygulamasını oluşturduktan sonra bu makaledeki yordamları izleyebilirsiniz.
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şlevinizi herhangi bir HTTP yöntemini kabul etmek üzere yapılandırabilirsiniz. Bu bölümde, işlevini yalnızca ile /api/hello
GET isteklerine yanıt verecek şekilde değiştireceksiniz. Varsayılan URL'yi kullanabilirsiniz: https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>
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 belirtildiği gibi HTTP tetikleyicisi ayarlarını kullanın.
Alan Örnek değer Açıklama Yol şablonu merhaba 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 ayar yol şablonundaki
/api
temel yol ön ekini işlediğinden, bunu burada ayarlamanız gerekmez.Kaydet'i seçin.
HTTP işlevlerini özelleştirme hakkında daha fazla bilgi için bkz. HTTP tetikleyicilerine ve bağlamalarına genel bakış 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. İşlevinizin artık yolu 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
.İşlevinizin çalıştığını onaylamak için Enter tuşuna basın. "Merhaba John" yanıtını görmeniz gerekir.
Ayrıca, işlevin yürütüldüğünü onaylamak için uç noktayı başka bir HTTP yöntemiyle çağırabilirsiniz. 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 çıkaracaksınız. Azure İşlevleri proxy'ler istekleri diğer kaynaklara iletmenizi sağlar. HTTP tetikleyicisi ile yaptığınız 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. Bunu yapmak, birden çok API kaynağını tek bir API yüzeyine oluşturmanıza olanak tanır. Bu, istemcilerin daha kolay tüketmesini sağlar ve API'nizi mikro hizmet olarak oluşturmak istiyorsanız 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
Azure İşlevleri proxy'ler hakkında daha fazla bilgi edinmek için bkz. [Eski proxy'lerle çalışma].
Not
Azure İşlevleri 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şturduğunuz yeni bir işlev uygulaması oluşturmak için İşlev uygulaması oluşturma'daki adımları yineleyin. Bu yeni uygulamanın URL'si API'mizin ön ucu olarak görev 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.
Ayarlar'ı genişletin ve ortam değişkenleri'ne tıklayın.
Anahtar/değer çiftlerinin depolandığı Uygulama ayarları sekmesini seçin.
Yeni bir ayar oluşturmak için + Ekle'yi seçin. Adı için HELLO_HOST girin ve Değerini arka uç işlev uygulamanızın konağına (örneğin
<YourBackendApp>.azurewebsites.net
) ayarlayın.Bu değer, HTTP işlevinizi test ederken daha önce kopyaladığınız URL'nin bir parçasıdır. Daha sonra yapılandırmada bu ayara başvuracaksınız.
Not
Ara sunucu için sabit kodlanmış ortam bağımlılığını önlemek için konak yapılandırması için uygulama ayarlarını kullanmanız önerilir. Uygulama ayarlarını kullanarak proxy yapılandırmasını birden fazla ortamda kullanabilirsiniz ve bu durumda ortama özgü uygulama ayarları geçerli olur.
Yeni ayarı kaydetmek için Uygula'yı seçin. Uygulama ayarları sekmesinde Uygula'yı seçin ve ardından İşlev uygulamasını yeniden başlatmak için Onayla'yı seçin.
Ön uçta ara sunucu oluşturma
Portalda ön uç işlev uygulamanıza geri dönün.
Sol taraftaki menüde İşlevler'i genişletin, Ara Sunucular'ı ve ardından Ekle'yi seçin.
Yeni proxy 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'ler temel yol ön ekini
/api
sağlamadığından, bunu yol şablonuna eklemeniz gerekir. Söz%HELLO_HOST%
dizimi, daha önce oluşturduğunuz uygulama ayarına başvurur. Çözümlenen URL özgün işlevinizi gösterir.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"
. - Yetkilendirmeye sahip 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 proxy, arka ucu tam olarak uygulamaya gerek kalmadan istemci geliştirmenin ilerlemesine olanak tanır. Geliştirmenin ilerleyen bölümlerinde bu mantığı destekleyen yeni bir işlev uygulaması oluşturabilir ve proxy'nizi buna yönlendirebilirsiniz:
Bu sahte API'yi oluşturmak için bu kez App Service Düzenleyicisi'ni kullanarak yeni bir proxy oluşturun. Başlamak için Azure portalında işlev uygulamanıza gidin. Platform özellikleri'ni ve ardından Geliştirme Araçları'nın altında App Service Düzenleyicisi'ni seçin.
App Service Düzenleyicisi yeni bir sekmede açılır.
Sol bölmede öğesini seçin
proxies.json
. 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 . Proxy'ler gelişmiş yapılandırması.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" } } }
Sahte API'nizi ekleyin. 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,
GetUserByName
özelliğini atlayanbackendUri
yeni bir proxy ekler. Başka bir kaynağı çağırmak yerine, yanıt geçersiz kılmayı kullanarak Azure İşlevleri proxy'lerden gelen varsayılan yanıtı değiştirir. Arka uç URL'si ile istek ve yanıt geçersiz kılmalarını da kullanabilirsiniz. Bu teknik, üst bilgileri, sorgu parametrelerini vb. değiştirmeniz gerekebilecek eski bir sisteme ara sunucu yaptığınızda kullanışlıdır. İstek ve yanıt geçersiz kılmaları hakkında daha fazla bilgi için bkz . İstekleri ve yanıtları değiştirme.Uç noktayı bir tarayıcıyla veya sık kullandığınız REST istemciyle çağırarak
<YourProxyApp>.azurewebsites.net/api/users/{username}
sahte API'nizi test edin. {username} öğesini, kullanıcı adını temsil eden bir dize değeriyle değiştirin.
İlgili içerik
Bu makalede, Azure İşlevleri ile API oluşturmayı ve özelleştirmeyi öğrendiniz. Ayrıca sahte API'ler de dahil olmak üzere birden çok API'yi birleştirilmiş bir API yüzeyi olarak bir araya getirmeyi de öğ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ştirme hakkında daha fazla bilgi için:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin