Azure API Management kullanarak sunucusuz bir API için Openapı tanımı oluşturmaCreate an OpenAPI definition for a serverless API using Azure API Management

REST API 'Ler genellikle bir Openapı tanımı kullanılarak açıklanır.REST APIs are often described using an OpenAPI definition. Bu tanım, bir API’de hangi işlemlerin kullanılabildiğinin yanı sıra API için istek ve yanıt verilerinin nasıl yapılandırılması gerektiğiyle ilgili bilgileri içerir.This definition contains information about what operations are available in an API and how the request and response data for the API should be structured.

Bu öğreticide, bir rüzgar türbini için acil onarımın uygun maliyetli olup olmadığını belirleyen bir işlev oluşturursunuz.In this tutorial, you create a function that determines whether an emergency repair on a wind turbine is cost-effective. Daha sonra, işlevin diğer uygulamalardan ve hizmetlerden çağrılabilmesi için Azure API Management kullanarak işlev uygulaması Için bir openapı tanımı oluşturursunuz.You then create an OpenAPI definition for the function app using Azure API Management so that the function can be called from other apps and services.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:In this tutorial, you learn how to:

  • Azure’da işlev oluşturmaCreate a function in Azure
  • Azure API Management kullanarak bir Openapı tanımı oluşturmaGenerate an OpenAPI definition using Azure API Management
  • İşleve çağrı yaparak tanımı test etmeTest the definition by calling the function
  • Openapı tanımını indirinDownload the OpenAPI definition

İşlev uygulaması oluşturmaCreate a function app

İşlevlerinizin yürütülmesini barındıran bir işlev uygulamasına sahip olmanız gerekir.You must have a function app to host the execution of your functions. İşlev uygulaması, kaynakların daha kolay yönetilmesi, dağıtılması, ölçeklendirilmesi ve paylaşılması için işlevleri bir mantıksal birim olarak gruplandırmanıza olanak tanır.A function app lets you group functions as a logical unit for easier management, deployment, scaling, and sharing of resources.

  1. Azure Portal sol üst köşesinde bulunan kaynak oluştur düğmesini seçin ve ardından işlem > işlev uygulaması' nı seçin.Select the Create a resource button found on the upper left-hand corner of the Azure portal, then select Compute > Function App.

    Azure portalında işlev uygulaması oluşturma

  2. Görüntünün altındaki tabloda belirtilen işlev uygulaması ayarlarını kullanın.Use the function app settings as specified in the table below the image.

    Yeni işlev uygulaması ayarlarını tanımlama

    AyarSetting Önerilen değerSuggested value AçıklamaDescription
    Uygulama adıApp name Genel olarak benzersiz bir adGlobally unique name Yeni işlev uygulamanızı tanımlayan ad.Name that identifies your new function app. Geçerli karakterler: a-z, 0-9, ve -.Valid characters are a-z, 0-9, and -.
    AbonelikSubscription AboneliğinizYour subscription Bu yeni işlev uygulamasının oluşturulduğu abonelik.The subscription under which this new function app is created.
    Kaynak GrubuResource Group myResourceGroupmyResourceGroup İşlev uygulamanızın oluşturulacağı yeni kaynak grubunun adı.Name for the new resource group in which to create your function app.
    OSOS WindowsWindows Kullanılabilir dil seçenekleri, işlev uygulamasının işletim sistemine bağlıdır.The language options available depend on the OS of the function app. Örneğin, Python Linux gerektirir.For example, Python requires Linux.
    Barındırma planıHosting plan Tüketim planıConsumption plan Kaynakların işlev uygulamanıza nasıl ayrılacağını tanımlayan barındırma planı.Hosting plan that defines how resources are allocated to your function app. Varsayılan Tüketim Planı'nda kaynaklar işlevlerin taleplerine göre dinamik olarak eklenir.In the default Consumption Plan, resources are added dynamically as required by your functions. Bu sunucusuz barındırmada, yalnızca işlevlerinizin çalıştığı süre için ödeme yaparsınız.In this serverless hosting, you only pay for the time your functions run. Bir App Service planı içinde çalıştırdığınızda işlev uygulamanızın ölçeklendirmesini yönetmeniz gerekir.When you run in an App Service plan, you must manage the scaling of your function app.
    LocationLocation Batı AvrupaWest Europe Kendinize veya işlevinizin erişeceği diğer hizmetlere yakın bir bölge seçin.Choose a region near you or near other services your functions access.
    Çalışma zamanı yığınıRuntime stack Tercih edilen dilPreferred language Tercih ettiğiniz işlev programlama dilini destekleyen bir çalışma zamanı seçin.Choose a runtime that supports your favorite function programming language. C# ve F# için .NET işlevlerini seçin.Choose .NET for C# and F# functions.
    DepolamaStorage Genel olarak benzersiz bir adGlobally unique name İşlev uygulamanız tarafından kullanılan bir depolama hesabı oluşturun.Create a storage account used by your function app. Depolama hesabı adları 3 ile 24 karakter arasında olmalı ve yalnızca sayıyla küçük harf içermelidir.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only. Dilerseniz depolama hesabı gereksinimlerini karşılayan mevcut bir hesap da kullanabilirsiniz.You can also use an existing account, which must meets the storage account requirements.
    Application InsightsApplication Insights VarsayılanDefault En yakın desteklenen bölgede aynı uygulama adının Application Insights kaynağını oluşturur.Creates an Application Insights resource of the same App name in the nearest supported region. Bu ayarı genişleterek, Yeni kaynak adını değiştirebilir veya verilerinizi depolamak istediğiniz Azure Coğrafya 'da farklı bir konum seçebilirsiniz.By expanding this setting, you can change the New resource name or choose a different Location in an Azure geography where you want to store your data.
  3. İşlev uygulamasını sağlamak ve dağıtmak için Oluştur'u seçin.Select Create to provision and deploy the function app.

  4. Portalın sağ üst köşesindeki Bildirim simgesini seçin ve Dağıtım başarılı iletisini bekleyin.Select the Notification icon in the upper-right corner of the portal and watch for the Deployment succeeded message.

    Yeni işlev uygulaması ayarlarını tanımlama

  5. Yeni işlev uygulamanızı görüntülemek için Kaynağa git’i seçin.Select Go to resource to view your new function app. Panoya sabitle ' yide seçebilirsiniz.You can also select Pin to dashboard. Sabitleme, panonuzdan bu işlev uygulama kaynağına döndürülmesini kolaylaştırır.Pinning makes it easier to return to this function app resource from your dashboard.

İşlevi oluşturmaCreate the function

Bu öğretici, iki parametre alan HTTP ile tetiklenen bir işlev kullanır:This tutorial uses an HTTP triggered function that takes two parameters:

  • Bir türbin onarımı için saat cinsinden tahmini süre.The estimated time to make a turbine repair, in hours.
  • Kilowatts cinsinden türbin kapasitesi.The capacity of the turbine, in kilowatts.

Daha sonra, işlev tarafından onarım maliyetinin ne olacağı ve türbinin 24 saatlik bir dönemde ne kadar gelir kazandırabileceği hesaplanır.The function then calculates how much a repair will cost, and how much revenue the turbine could make in a 24 hour period. Azure Portalhttp ile tetiklenen işlevi oluşturmak için.TO create the HTTP triggered function in the Azure portal.

  1. İşlev uygulamanızı genişletin ve İşlevler'in yanındaki + düğmesini seçin.Expand your function app and select the + button next to Functions. Portalda > devam et' i seçin.Select In-portal > Continue.

  2. Daha fazla şablon seçin... , ardından son ' u seçin ve şablonları görüntüleyinSelect More templates..., then select Finish and view templates

  3. HTTP tetikleyicisi ' ni seçin TurbineRepair , işlev Function adınıyazın, kimlik doğrulama düzeyi için öğesini seçin ve ardından Oluştur' u seçin.Select HTTP trigger, type TurbineRepair for the function Name, choose Function for Authentication level, and then select Create.

    Openapı için HTTP işlevi oluşturma

  4. Run. CSX C# betik dosyasının içeriğini aşağıdaki kodla değiştirin ve ardından Kaydet' i seçin:Replace the contents of the run.csx C# script file with the following code, then choose Save:

    #r "Newtonsoft.Json"
    
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    
    const double revenuePerkW = 0.12;
    const double technicianCost = 250;
    const double turbineCost = 100;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
    {
        // Get query strings if they exist
        int tempVal;
        int? hours = Int32.TryParse(req.Query["hours"], out tempVal) ? tempVal : (int?)null;
        int? capacity = Int32.TryParse(req.Query["capacity"], out tempVal) ? tempVal : (int?)null;
    
        // Get request body
        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
    
        // Use request body if a query was not sent
        capacity = capacity ?? data?.capacity;
        hours = hours ?? data?.hours;
    
        // Return bad request if capacity or hours are not passed in
        if (capacity == null || hours == null){
            return new BadRequestObjectResult("Please pass capacity and hours on the query string or in the request body");
        }
        // Formulas to calculate revenue and cost
        double? revenueOpportunity = capacity * revenuePerkW * 24;  
        double? costToFix = (hours * technicianCost) +  turbineCost;
        string repairTurbine;
    
        if (revenueOpportunity > costToFix){
            repairTurbine = "Yes";
        }
        else {
            repairTurbine = "No";
        };
    
        return (ActionResult)new OkObjectResult(new{
            message = repairTurbine,
            revenueOpportunity = "$"+ revenueOpportunity,
            costToFix = "$"+ costToFix
        });
    }
    

    Bu işlev kodu, acil onarımın uygun maliyetli olup olmadığının yanı sıra türbinin temsil ettiği gelir fırsatını ve türbin onarımının maliyetini gösteren Yes veya No şeklinde bir ileti döndürür.This function code returns a message of Yes or No to indicate whether an emergency repair is cost-effective, as well as the revenue opportunity that the turbine represents, and the cost to fix the turbine.

  5. İşlevi test etmek için en sağdaki Test seçeneğine tıklayarak test sekmesini genişletin. İstek gövdesi için aşağıdaki değeri girip Çalıştır’a tıklayın.To test the function, click Test at the far right to expand the test tab. Enter the following value for the Request body, and then click Run.

    {
    "hours": "6",
    "capacity": "2500"
    }
    

    İşlevi Azure portalında test etme

    Yanıtın gövdesinde aşağıdaki değer döndürülür.The following value is returned in the body of the response.

    {"message":"Yes","revenueOpportunity":"$7200","costToFix":"$1600"}
    

Acil onarımların maliyet açısından uygunluğunu belirleyen bir işleviniz oldu.Now you have a function that determines the cost-effectiveness of emergency repairs. Sonra, işlev uygulaması için bir Openapı tanımı oluşturursunuz.Next, you generate an OpenAPI definition for the function app.

OpenAPI tanımını oluşturmaGenerate the OpenAPI definition

Artık OpenAPI tanımını oluşturmaya hazırsınız.Now you're ready to generate the OpenAPI definition.

  1. İşlev uygulamasını seçin, ardından platform özellikleri' nde API Management ' yi seçin ve API Managementaltında Yeni oluştur ' u seçin.Select the function app, then in Platform features, choose API Management and select Create new under API Management.

    Platform özelliklerinde API Management seçin

  2. Görüntünün altındaki tabloda belirtilen API Management ayarlarını kullanın.Use the API Management settings as specified in the table below the image.

    Yeni API Management hizmeti oluştur

    AyarSetting Önerilen değerSuggested value AçıklamaDescription
    NameName Genel olarak benzersiz bir adGlobally unique name İşlev uygulamanızın adı temel alınarak bir ad oluşturulur.A name is generated based on the name of your function app.
    AbonelikSubscription AboneliğinizYour subscription Bu yeni kaynağın altında oluşturulduğu abonelik.The subscription under which this new resource is created.
    Kaynak GrubuResource Group myResourceGroupmyResourceGroup Sizin için ayarlanmış olması gereken işlev uygulamanız ile aynı kaynak.The same resource as your function app, which should get set for you.
    LocationLocation Batı ABDWest US Batı ABD konumunu seçin.Choose the West US location.
    Kuruluş adıOrganization name ContosoContoso Geliştirici portalında kullanılan kuruluşun adı ve e-posta bildirimleri için.The name of the organization used in the developer portal and for email notifications.
    Yönetici e-postasıAdministrator email e-postanızyour email API Management 'den sistem bildirimleri alan e-posta.Email that received system notifications from API Management.
    Fiyatlandırma katmanıPricing tier Tüketim (Önizleme)Consumption (preview) Tüketim katmanı önizleme aşamasındadır ve tüm bölgelerde kullanılamaz.Consumption tier is in preview and isn't available in all regions. Tüm fiyatlandırma ayrıntıları için API Management fiyatlandırma sayfasına bakınFor complete pricing details, see the API Management pricing page
  3. API Management örneğini oluşturmak için Oluştur ' u seçin ve bu işlem birkaç dakika sürebilir.Choose Create to create the API Management instance, which may take several minutes.

  4. Günlükleri işlev uygulamasıyla aynı yere göndermek için Application Insights etkinleştir ' i seçin, ardından kalan Varsayılanları kabul edin ve bağlantı API 'si' ni seçin.Select Enable Application Insights to send logs to the same place as the function application, then accept the remaining defaults and select Link API.

  5. Içeri aktarma Azure işlevleri , Turbinerepair işlevi vurgulanmış şekilde açılır.The Import Azure Functions opens with the TurbineRepair function highlighted. Devam etmek için Seç ' i seçin.Choose Select to continue.

    Azure Işlevlerini API Management içine aktarın

  6. İşlev uygulaması oluştur sayfasında, Varsayılanları kabul edin ve Oluştur ' u seçin.In the Create from Function App page, accept the defaults and select Create

    İşlev Uygulamasından oluştur

API artık işlev için oluşturulmuştur.The API is now created for the function.

API'yi test etmeTest the API

Openapı tanımını kullanmadan önce API 'nin çalıştığını doğrulamanız gerekir.Before you use the OpenAPI definition, you should verify that the API works.

  1. İşlevinizin Test sekmesinde, Post işlemi ' ni seçin.On the Test tab of your function, select POST operation.

  2. Saatlerin ve kapasitenin değerlerini girinEnter values for hours and capacity

    {
    "hours": "6",
    "capacity": "2500"
    }
    
  3. Gönder' e tıklayın, ardından HTTP yanıtını görüntüleyin.Click Send, then view the HTTP response.

    Test işlevi API 'SI

Openapı tanımını indirinDownload the OpenAPI definition

API 'niz beklendiği gibi çalışıyorsa, Openapı tanımını indirebilirsiniz.If your API works as expected, you can download the OpenAPI definition.

  1. Sayfanın üst kısmında Openapı tanımını indir ' i seçin.Select Download OpenAPI definition at the top of the page.

    OpenAPI tanımını indirin

  2. İndirilen JSON dosyasını açın ve tanımı gözden geçirin.Open the downloaded JSON file and review the definition.

Kaynakları temizlemeClean up resources

Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz.In the preceding steps, you created Azure resources in a resource group. İleride bu kaynaklara ihtiyaç duymayacağınızı düşünüyorsanız kaynakları silmek için kaynak grubunu silebilirsiniz.If you don't expect to need these resources in the future, you can delete them by deleting the resource group.

Azure portalında sol taraftaki menüden Kaynak grupları'nı seçin ve ardından myResourceGroup seçeneğini belirleyin.From the left menu in the Azure portal, select Resource groups and then select myResourceGroup.

Kaynak grubu sayfasındaki listede yer alan kaynakların silmek istediğiniz kaynaklar olduğundan emin olun.On the resource group page, make sure that the listed resources are the ones you want to delete.

Sil'i seçin, metin kutusuna myResourceGroup yazın ve ardından Sil'e tıklayın.Select Delete, type myResourceGroup in the text box, and then select Delete.

Sonraki adımlarNext steps

İşlevlerinizin bir Openapı tanımını oluşturmak için API Management tümleştirme kullandınız.You have used API Management integration to generate an OpenAPI definition of your functions. Tanımı artık portalda API Management düzenleyebilirsiniz.You can now edit the definition in API Management in the portal. Ayrıca API Management hakkında daha fazla bilgiedinebilirsiniz.You can also learn more about API Management.