Azure Functions Serisi #9 – Http Trigger
Merhaba,
Bu içeriğimizde Azure Function trigger türlerinden ilki ve en çok kullanılanı olan Http Trigger üzerine detaylıca konuşuyor olacağız.
Http Trigger Nedir?
Http Trigger, tarafımıza verdiği endpointler aracılığıyla tetiklenebilir bir fonksiyon çeşididir.

Bir önceki Azure Function Dosya Yapısı makalemizden örnek Http Trigger endpoint görseli…
Http Trigger Yapısı Nasıldır?
Http Trigger yapısal olarak; Route, Query String ve Request Body yapılanmasından meydana gelmektedir. Bu kavramların izahatlerini yapabilmek için aşağıdaki function’ı ele alalım;
Not! Bu içeriği anlamlandırabilmek için bir Azure Function uygulamasının nasıl oluşturulduğunu bilmeniz gerekmektedir. Bunun için yazı dizisindeki önceden kaleme alınmış ilgili makalelerden istifade edebilirsiniz.
public static class MyFunction { [FunctionName("MyFunction")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); return new OkObjectResult(data); } }
- Route
Yukarıdaki uygulamayı ayağa kaldırdığımızda bizlere aşağıdaki endpoint’i verecektir.
Bu endpoint’te ki ‘/api/MyFunction‘ kırmızıyla vurgulanan nokta 3. satırdaki ‘[FunctionName(“MyFunction”)]’ attribute’u sayesinde gelmektedir. ‘Run’ fonksiyonunun ‘HttpRequest’ türünden olan ‘req’ isimli parametresinin işaretlendiği ‘HttpTrigger’ attribute’unun ‘Route’ parametresine odaklanırsanız eğer, bu parametre boş olduğu sürece varsayılan olarak endpoint ismini ‘FunctionName’ attribute’undan alacaktır.‘FunctionName’ attribute’unun değeri değiştirilirse endpoint aşağıda göreceğiniz üzere değişmiş olacaktır.
Benzer mantıkla ‘Route’ parametresine girilen değer ‘FunctionName’i ezecek ve endpoint’i belirleyecektir.
Route Parametre Tanımlama
Klasik Asp.NET Core uygulamalarındaki gibi süslü parantezler eşliğinde oluşturulan function’lara da route parametresi eklenebilmektedir. Örneğin;
myexample/{param1}/{param2}
Tanımlanan bu route parametre değerlerini yakalayabilmek için function’da o parametre isimlerine karşılık parametrelerin tanımlanması gerekmektedir. Şöyle ki;
- Query String
Endpoint’ler, parametre alarak gizli bir şekilde değer taşıyabilen yapılar olsada yer yer url üzerinden güvenlik gerektirmeyen bilgilerimizi herhangi bir gizliliğe gerek duymaksızın değişkenler ile taşımak isteyebiliriz. Bunun için query string yapısı kullanılır.Query String yapılanmasında, ne ‘Route’ alanında süslü parantez ne de fonksiyonda bir parametre tanımlamaya gerek vardır. Direkt olarak url üzerinden tasarlanan query string değerlerine ‘req’ parametresinin ‘Query’ property’si üzerinden erişim sağlanabilmektedir.
- Request Body
Http Trigger, client’tan aldığı body ile etkileşimli bir tetikleyici sunmaktadır. Gönderilen body Stream olarak ‘req.Body’ komutu ile yakalanabilmektedir.Gelen Stream data’yı aşağıdaki gibi parse ederek kullanabilirsiniz.
string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody);
Http Trigger CORS Ayarlaması
Bir endpoint’i tüketecek kaynak eğer ki bir tarayıcı ise CORS özelliğini ayarlamamız gerekmektedir. Bknz : Asp.NET Core Uygulamalarında CORS(Cross-Origin-Resource-Sharing) Politikası Ayarlama
CORS; bir güvenlik değil, tarayıcılar için var olan güvenliği gevşetme yöntemidir.
Azure Function CORS politikalarını ayarlayabilmek için ‘local.setting.json’ dosyasına aşağıdaki ifadeyi eklemeniz gerekmektedir.
"Host": { "CORS": "*" }
Dosyanın tam hali;
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet" }, "Host": { "CORS": "*" } }
İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…
2 Cevaplar
[…] Azure Functions Serisi #9 – Http Trigger […]
[…] sağlayan bir özelliktir. İşlevsel açıdan spesifik bir örnek vermemiz gerekirse eğer; Http Trigger ile elde edilen datayı Azure Storage Table‘a yazdırmak, gelen dosyayı Azure Storage […]