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.

Http Trigger Endpoint Listesi

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.
    Azure Functions Serisi #9 - Http Trigger
    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.
    Azure Functions Serisi #9 - Http Trigger

    Benzer mantıkla ‘Route’ parametresine girilen değer ‘FunctionName’i ezecek ve endpoint’i belirleyecektir.
    Azure Functions Serisi #9 - Http Trigger

    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;
    Azure Functions Serisi #9 - Http Trigger

  • 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.

    Örneğin;
    Azure Functions Serisi #9 - Http Trigger

  • 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…

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. 09 Ağustos 2020

    […] Azure Functions Serisi #9 – Http Trigger […]

  2. 16 Ağustos 2020

    […] 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 […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*