Azure Işlevlerinde bir HTTP uç noktasını özelleştirmeCustomize an HTTP endpoint in Azure Functions

Bu makalede, Azure Işlevlerinin yüksek düzeyde ölçeklenebilir API 'Ler oluşturmanıza nasıl izin verdiğini öğrenirsiniz.In this article, you learn how Azure Functions allows you to build highly scalable APIs. Azure İşlevleri Node.JS, C# ve daha birçok dilde uç nokta yazmayı kolaylaştıran yerleşik HTTP tetikleyicisi ve bağlama koleksiyonuna sahiptir.Azure Functions comes with a collection of built-in HTTP triggers and bindings, which make it easy to author an endpoint in a variety of languages, including Node.JS, C#, and more. Bu makalede, API tasarımınızda belirli eylemleri işlemek üzere bir HTTP tetikleyicisi özelleştirecek.In this article, you will customize an HTTP trigger to handle specific actions in your API design. Ayrıca Azure İşlev Proxy'leri tümleştirmesi yapıp sahte API'ler oluşturarak API'nizi ölçeklendirmeye hazır hale getireceksiniz.You will also prepare for growing your API by integrating it with Azure Functions Proxies and setting up mock APIs. Tüm bu işlemler Azure İşlevleri'nin sunucusuz işlem ortamında gerçekleştirildiğinden kaynak ölçeklendirme konusunda endişelenmenize gerek yoktur. Tek yapmanız gereken API'nizin mantığına yoğunlaşmaktır.All of this is accomplished on top of the Functions serverless compute environment, so you don't have to worry about scaling resources - you can just focus on your API logic.

ÖnkoşullarPrerequisites

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.This topic uses as its starting point the resources created in Create your first function from the Azure portal. Daha önce yapmadıysanız işlev uygulamanızı oluşturmak için lütfen şu adımları uygulayın.If you haven't already done so, please complete these steps now to create your function app.

Sonuçta elde edilen işlev bu makalenin geri kalanında kullanılacaktır.The resulting function will be used for the rest of this article.

Azure'da oturum açınSign in to Azure

Azure portalı açın.Open the Azure portal. Bunu yapmak için, Azure hesabınızla https://portal.azure.com oturumu açın.To do this, sign in to https://portal.azure.com with your Azure account.

HTTP işlevini özelleştirmeCustomize your HTTP function

HTTP ile tetiklenen işleviniz varsayılan olarak tüm HTTP yöntemlerini kabul edecek şekilde yapılandırılmıştır.By default, your HTTP-triggered function is configured to accept any HTTP method. Ayrıca http://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey> biçiminde varsayılan URL de mevcuttur.There is also a default URL of the form http://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>. Hızlı başlangıç adımlarını takip ettiyseniz <funcname> değeri muhtemelen "HttpTriggerJS1" şeklinde olacaktır.If you followed the quickstart, then <funcname> probably looks something like "HttpTriggerJS1". Bu bölümde işlevi yalnızca /api/hello yoluna yönlendirilen GET isteklerine yanıt verecek şekilde değiştireceksiniz.In this section, you will modify the function to respond only to GET requests against /api/hello route instead.

  1. Azure portalda işlevinize gidin.Navigate to your function in the Azure portal. Sol gezinti bölmesinden Tümleştir'i seçin.Select Integrate in the left navigation.

    HTTP işlevini özelleştirme

  2. Tabloda belirtilen HTTP tetikleyici ayarlarını kullanın.Use the HTTP trigger settings as specified in the table.

    AlanField Örnek değerSample value AçıklamaDescription
    İzin verilen HTTP yöntemleriAllowed HTTP methods Seçilen yöntemlerSelected methods Bu işlevi çağırmak için kullanılabilecek HTTP yöntemlerini belirlerDetermines what HTTP methods may be used to invoke this function
    Seçili HTTP metotlarıSelected HTTP methods GETGET Yalnızca seçilen HTTP yöntemlerinin bu işlevi çağırmak için kullanılmasını sağlarAllows only selected HTTP methods to be used to invoke this function
    Yol şablonuRoute template /hello/hello Bu işlevi çağırmak için kullanılacak yolu belirlerDetermines what route is used to invoke this function
    Yetkilendirme DüzeyiAuthorization Level AnonimAnonymous İsteğe bağlı: İşlevinizi API anahtarı olmadan erişilebilir duruma getirirOptional: Makes your function accessible without an API key

    Not

    Genel ayar tarafından işlendiği için /api temel yol ön ekini yol şablonuna dahil etmediniz.Note that you did not include the /api base path prefix in the route template, as this is handled by a global setting.

  3. Save (Kaydet) düğmesine tıklayın.Click Save.

HTTP işlevlerini özelleştirme hakkında daha fazla bilgi için bkz. Azure İşlevleri HTTP bağlamaları.You can learn more about customizing HTTP functions in Azure Functions HTTP bindings.

API’nizi test etmeTest your API

Şimdi işlevinizi test ederek yeni API yüzeyiyle nasıl çalıştığını görün.Next, test your function to see it working with the new API surface.

  1. Sol gezinti bölmesinde işlevin adına tıklayarak geliştirme sayfasına dönün.Navigate back to the development page by clicking on the function's name in the left navigation.
  2. İşlev URL'sini al'a tıklayıp URL'yi kopyalayın.Click Get function URL and copy the URL. Artık /api/hello yolunu kullandığını görmeniz gerekir.You should see that it uses the /api/hello route now.
  3. URL'yi yeni bir tarayıcı sekmesine veya tercih ettiğiniz REST istemcisine kopyalayın.Copy the URL into a new browser tab or your preferred REST client. Tarayıcılar varsayılan olarak GET kullanır.Browsers will use GET by default.
  4. URL'nizdeki sorgu dizesine parametre ekleyin, örneğin: /api/hello/?name=JohnAdd parameters to the query string in your URL e.g. /api/hello/?name=John
  5. 'Enter' tuşuna basıp çalıştığını onaylayın.Hit 'Enter' to confirm that it is working. "Hello John" yanıtını görmeniz gerekir.You should see the response "Hello John"
  6. Ayrıca uç noktayı başka bir HTTP yöntemi ile çağırmayı deneyerek işlevin yürütülmediğini onaylayabilirsiniz.You can also try calling the endpoint with another HTTP method to confirm that the function is not executed. Bunun için cURL, Postman veya Fiddler gibi bir REST istemcisi kullanmanız gerekir.For this, you will need to use a REST client, such as cURL, Postman, or Fiddler.

Proxy'lere genel bakışProxies overview

Bir sonraki bölümde API'nizi proxy aracılığıyla erişilebilir duruma getireceksiniz.In the next section, you will surface your API through a proxy. Azure İşlev Proxy'leri, istekleri başka kaynaklara yönlendirmenizi sağlar.Azure Functions Proxies allows you to forward requests to other resources. 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 bir kod yazmak yerine yürütmenin uzakta gerçekleştirilmesi için bir URL sağlarsınız.You define an HTTP endpoint just like with HTTP trigger, but instead of writing code to execute when that endpoint is called, you provide a URL to a remote implementation. Bu sayede tek bir API yüzeyinde birden fazla API kaynağı oluşturabilir ve tüketiciler için kolaylık sağlayabilirsiniz.This allows you to compose multiple API sources into a single API surface which is easy for clients to consume. Bu işlev özellikle API'nizi mikro hizmetler olarak derlemek istediğiniz durumlarda kullanışlı olacaktır.This is particularly useful if you wish to build your API as microservices.

Proxy, herhangi bir HTTP kaynağına yönlendirme yapabilir, örneğin:A proxy can point to any HTTP resource, such as:

Proxy'ler hakkında daha fazla bilgi için bkz. Azure İşlev Proxy'leri ile çalışma.To learn more about proxies, see Working with Azure Functions Proxies.

İlk proxy'nizi oluşturmaCreate your first proxy

Bu bölümde API'nizin ön ucu olarak görev yapacak yeni bir proxy oluşturacaksınız.In this section, you will create a new proxy which serves as a frontend to your overall API.

Ön uç ortamını ayarlamaSetting up the frontend environment

Proxy'nizi oluşturacağınız yeni bir işlev uygulaması oluşturmak için İşlev uygulaması oluşturma bölümündeki adımları tekrarlayın.Repeat the steps to Create a function app to create a new function app in which you will create your proxy. Bu yeni uygulamanın URL'si, API'nizin ön ucu olacak ve önceden düzenlediğiniz işlev uygulaması arka uç olarak görev yapacak.This new app's URL will serve as the frontend for our API, and the function app you were previously editing will serve as a backend.

  1. Portalda yeni ön uç işlev uygulamanıza gidin.Navigate to your new frontend function app in the portal.

  2. Platform Özellikleri'ni ve Uygulama Ayarları'nı seçin.Select Platform Features and choose Application Settings.

  3. Anahtar/değer çiftlerinin depolandığı Uygulama ayarları bölümüne inin ve "HELLO_HOST" anahtarıyla yeni bir ayar oluşturun.Scroll down to Application settings where key/value pairs are stored and create a new setting with key "HELLO_HOST". Değerini arka uç işlev uygulamanızın ana bilgisayarı olacak şekilde ayarların, örneğin: <YourBackendApp>.azurewebsites.net.Set its value to the host of your backend function app, such as <YourBackendApp>.azurewebsites.net. Bu değer HTTP işlevinizi test ederken kopyaladığınız URL'nin bir bölümüdür.This is part of the URL that you copied earlier when testing your HTTP function. Bu ayarı yapılandırmanın ilerleyen bölümlerinde kullanacaksınız.You'll reference this setting in the configuration later.

    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.App settings are recommended for the host configuration to prevent a hard-coded environment dependency for the proxy. Uygulama ayarlarını kullanarak proxy yapılandırmasını birden fazla ortamda kullanabilirsiniz ve bu durumda ortama özgü uygulama ayarları geçerli olur.Using app settings means that you can move the proxy configuration between environments, and the environment-specific app settings will be applied.

  4. Save (Kaydet) düğmesine tıklayın.Click Save.

Ön uçta proxy oluşturmaCreating a proxy on the frontend

  1. Portalda ön uç işlev uygulamanıza dönün.Navigate back to your frontend function app in the portal.

  2. Sol gezinti bölmesinde "Proxy'ler" girişinin yanındaki artı işaretine '+' tıklayın.In the left-hand navigation, click the plus sign '+' next to "Proxies". Proxy oluşturmaCreating a proxy

  3. Tabloda belirtilen proxy ayarlarını kullanın.Use proxy settings as specified in the table.

    AlanField Örnek değerSample value AçıklamaDescription
    AdName HelloProxyHelloProxy Yalnızca yönetim için kullanılan kolay adA friendly name used only for management
    Yol şablonuRoute template /api/remotemerhaba/api/remotehello Bu proxy'yi çağırmak için kullanılacak yolu belirlerDetermines what route is used to invoke this proxy
    Arka uç URL'siBackend URL https://%HELLO_HOST%/api/hello İsteğe proxy uygulanacak uç noktayı belirtirSpecifies the endpoint to which the request should be proxied
  4. Proxy'ler /api temel yol ön ekini sağlamaz ve bu ekin yol şablonuna dahil edilmesi gerekir.Note that Proxies does not provide the /api base path prefix, and this must be included in the route template.

  5. %HELLO_HOST% söz dizimi önceden oluşturduğunuz uygulama ayarına başvuracaktır.The %HELLO_HOST% syntax will reference the app setting you created earlier. Çözümlenen URL, özgün işlevinize işaret edecektir.The resolved URL will point to your original function.

  6. Oluştur'a tıklayın.Click Create.

  7. Yeni proxy'yi denemek için Proxy URL'sini kopyalayıp tarayıcıda veya sık kullandığınız HTTP istemcisinde test edebilirsiniz.You can try out your new proxy by copying the Proxy URL and testing it in the browser or with your favorite HTTP client.

    1. Anonim işlev için şunu kullanın:For an anonymous function use:
      1. https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies"
    2. Yetkilendirme özelliğine sahip işlev için şunu kullanın:For a function with authorization use:
      1. https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies"

Sahte API oluşturmaCreate a mock API

Bu adımda proxy kullanarak çözümünüz için sahte API oluşturacaksınız.Next, you will use a proxy to create a mock API for your solution. Bu işlem arka uç uygulaması tamamlanmadan istemci geliştirme sürecinin devam etmesini sağlar.This allows client development to progress, without needing the backend fully implemented. Geliştirmenin sonraki aşamalarında bu mantığı destekleyen ve proxy'nizi yönlendiren yeni bir işlev uygulaması oluşturabilirsiniz.Later in development, you could create a new function app which supports this logic and redirect your proxy to it.

Bu sahte API'yi oluşturmak için yeni bir proxy oluşturacağız ve bu kez App Service Düzenleyicisi'ni kullanacağız.To create this mock API, we will create a new proxy, this time using the App Service Editor. Başlamak için portalda işlev uygulamanıza gidin.To get started, navigate to your function app in the portal. Platform Özellikleri'ni seçin ve Geliştirme Araçları bölümünde App Service Düzenleyicisi'ni bulun.Select Platform features and under Development Tools find App Service Editor. Tıkladığınızda App Service Düzenleyicisi yeni bir sekmede açılır.Clicking this will open the App Service Editor in a new tab.

Sol gezinti bölmesinden proxies.json öğesini seçin.Select proxies.json in the left navigation. Bu, tüm proxy'lerinizin yapılandırmasının bulunduğu dosyadır.This is the file which stores the configuration for all of your proxies. İşlev dağıtım yöntemlerinden birini kullanıyorsanız kaynak denetiminde tutmanız gereken dosya budur.If you use one of the Functions deployment methods, this is the file you will maintain in source control. Bu dosya hakkında daha fazla bilgi için bkz. Gelişmiş proxy yapılandırması.To learn more about this file, see Proxies advanced configuration.

Bu noktaya kadar gösterilen adımları uyguladıysanız proxies.json dosyanız şu şekilde görünmelidir:If you've followed along so far, your proxies.json should look like the following:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "HelloProxy": {
            "matchCondition": {
                "route": "/api/remotehello"
            },
            "backendUri": "https://%HELLO_HOST%/api/hello"
        }
    }
}

Şimdi sahte API'nizi ekleyeceksiniz.Next you'll add your mock API. proxies.json dosyanızı şu şekilde değiştirin:Replace your proxies.json file with the following:

{
    "$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 backendUri özelliği olmayan "GetUserByName" adlı yeni bir proxy ekler.This adds a new proxy, "GetUserByName", without the backendUri property. 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.Instead of calling another resource, it modifies the default response from Proxies using a response override. İstek ve yanıt geçersiz kılma işlemleri bir arka uç URL'si ile birlikte de kullanılabilir.Request and response overrides can also be used in conjunction with a backend URL. Bu özellikle, üst bilgileri, sorgu parametrelerini, vb. değişiklik yapmanız gerekebilecek eski bir sisteme proxy oluştururken kullanışlıdır. İstek ve yanıt geçersiz kılmaları hakkında daha fazla bilgi edinmek için bkz. proxy 'lerde istekleri ve yanıtları değiştirme.This is particularly useful when proxying to a legacy system, where you might need to modify headers, query parameters, etc. To learn more about request and response overrides, see Modifying requests and responses in Proxies.

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.Test your mock API by calling the <YourProxyApp>.azurewebsites.net/api/users/{username} endpoint using a browser or your favorite REST client. {username} yerine kullanıcı adını temsil eden bir dize değeri yazmayı unutmayın.Be sure to replace {username} with a string value representing a username.

Sonraki adımlarNext steps

Bu makalede, Azure Işlevlerinde bir API oluşturmayı ve özelleştirmeyi öğrendiniz.In this article, you learned how to build and customize an API on Azure Functions. Ayrıca sahteler dahil olmak üzere birden fazla API'yi bir araya getirerek birleştirilmiş bir API yüzeyi oluşturmayı da öğrendiniz.You also learned how to bring multiple APIs, including mocks, together as a unified API surface. 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.You can use these techniques to build out APIs of any complexity, all while running on the serverless compute model provided by Azure Functions.

API'nizi geliştirirken aşağıdaki konulara da başvurabilirsiniz:The following references may be helpful as you develop your API further: