Azure Işlevleri HTTP Tetikleyicileri ve bağlamalarıAzure Functions HTTP triggers and bindings

Bu makalede, Azure Işlevlerinde HTTP Tetikleyicileri ve çıkış bağlamalarıyla nasıl çalışılacağı açıklanmaktadır.This article explains how to work with HTTP triggers and output bindings in Azure Functions.

HTTP tetikleyicisi, Web kancalarınayanıt verecek şekilde özelleştirilebilir.An HTTP trigger can be customized to respond to webhooks.

Azure işlevleri geliştiricileri için başvuru bilgileri budur.This is reference information for Azure Functions developers. Azure işlevleri'ne yeni başladıysanız, aşağıdaki kaynaklarla başlayın:If you're new to Azure Functions, start with the following resources:

İpucu

Yanlış örnek oluşturma tarafından kaynaklanabilir bağlantı noktası tükenmesi önlemek HTTP veya Web kancası bağlamaları kullanmayı planlıyorsanız, plan HttpClient.If you plan to use the HTTP or WebHook bindings, plan to avoid port exhaustion that can be caused by improper instantiation of HttpClient. Daha fazla bilgi için Azure işlevleri'nde bağlantılarını yönetme.For more information, see How to manage connections in Azure Functions.

Bu makaledeki kod, .NET Core kullanan 2. x söz dizimini varsayılan olarak kullanır.The code in this article defaults to Functions 2.x syntax which uses .NET Core. 1. x sözdizimi hakkında daha fazla bilgi için, bkz. 1. x işlevleri şablonları.For information on the 1.x syntax, see the 1.x functions templates.

Paketler - 1.x işlevleriPackages - Functions 1.x

HTTP bağlamaları Microsoft. Azure. WebJobs. Extensions. http NuGet paketi, sürüm 1. x içinde sağlanır.The HTTP bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Http NuGet package, version 1.x. Paketin kaynak kodu, Azure-WebJobs-SDK-Extensions GitHub deposunda bulunur.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Bu bağlama için destek, tüm geliştirme ortamlarında otomatik olarak sağlanır.Support for this binding is automatically provided in all development environments. Paketini el ile veya uzantısını kaydetmek gerekmez.You don't have to manually install the package or register the extension.

Paketler - 2.x işlevleriPackages - Functions 2.x

HTTP bağlamaları Microsoft. Azure. WebJobs. Extensions. http NuGet paketi, sürüm 3. x içinde verilmiştir.The HTTP bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Http NuGet package, version 3.x. Paketin kaynak kodu, Azure-WebJobs-SDK-Extensions GitHub deposunda bulunur.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Bu bağlama için destek, tüm geliştirme ortamlarında otomatik olarak sağlanır.Support for this binding is automatically provided in all development environments. Paketini el ile veya uzantısını kaydetmek gerekmez.You don't have to manually install the package or register the extension.

TetikleyiciTrigger

HTTP tetikleyicisi, HTTP isteğiyle bir işlevi çağırmanıza olanak sağlar.The HTTP trigger lets you invoke a function with an HTTP request. HTTP tetikleyicisini kullanarak sunucusuz API 'Ler oluşturabilir ve Web kancalarına yanıt verebilirsiniz.You can use an HTTP trigger to build serverless APIs and respond to webhooks.

Varsayılan olarak, bir HTTP tetikleyicisi, 1. x Işlevleri içindeki boş bir gövdeden HTTP 200 Tamam 204 veya 2. x Işlevlerinde boş bir gövdeye sahip Içerik yok ' u döndürür.By default, an HTTP trigger returns HTTP 200 OK with an empty body in Functions 1.x, or HTTP 204 No Content with an empty body in Functions 2.x. Yanıtı değiştirmek için bir http çıkış bağlamasıyapılandırın.To modify the response, configure an HTTP output binding.

Tetikleyici - örnekTrigger - example

Dile özgü örneğe bakın:See the language-specific example:

Tetikleyici - C# örneğiTrigger - C# example

Aşağıdaki örnek, sorgu dizesinde veya http isteğinin gövdesinde bir name parametre gösteren bir C# işlevi gösterir.The following example shows a C# function that looks for a name parameter either in the query string or the body of the HTTP request. Dönüş değerinin çıkış bağlaması için kullanıldığını, ancak bir dönüş değeri özniteliğinin gerekli olmadığını unutmayın.Notice that the return value is used for the output binding, but a return value attribute isn't required.

[FunctionName("HttpTriggerCSharp")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] 
    HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

Tetikleyici - C# betiği örneğiTrigger - C# script example

Aşağıdaki örnek, bir function. JSON dosyasındaki bir tetikleyici bağlamayı ve bağlamayı kullanan bir C# betik işlevini gösterir.The following example shows a trigger binding in a function.json file and a C# script function that uses the binding. İşlevi sorgu dizesinde veya http name isteğinin gövdesinde bir parametre arar.The function looks for a name parameter either in the query string or the body of the HTTP request.

İşte function.json dosyası:Here's the function.json file:

{
    "disabled": false,
    "bindings": [
        {
            "authLevel": "function",
            "name": "req",
            "type": "httpTrigger",
            "direction": "in",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "name": "$return",
            "type": "http",
            "direction": "out"
        }
    ]
}

Yapılandırma bölümde, bu özellikleri açıklanmaktadır.The configuration section explains these properties.

Buraya bağlanan C# betik kodu HttpRequest:Here's C# script code that binds to HttpRequest:

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

Yerine özel bir nesneye bağlayabilirsiniz HttpRequest.You can bind to a custom object instead of HttpRequest. Bu nesne, isteğin gövdesinden oluşturulur ve JSON olarak ayrıştırılır.This object is created from the body of the request and parsed as JSON. Benzer şekilde, bir tür HTTP yanıt çıkış bağlamasına geçirilebilir ve bir 200 durum koduyla birlikte yanıt gövdesi olarak döndürülür.Similarly, a type can be passed to the HTTP response output binding and returned as the response body, along with a 200 status code.

using System.Net;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

public static string Run(Person person, ILogger log)
{   
    return person.Name != null
        ? (ActionResult)new OkObjectResult($"Hello, {person.Name}")
        : new BadRequestObjectResult("Please pass an instance of Person.");
}

public class Person {
     public string Name {get; set;}
}

Tetikleyici - F# örneğiTrigger - F# example

Aşağıdaki örnek, bir function. JSON dosyası ve bağlamayı kullanan bir F# işlev içindeki bir tetikleyiciyi bağlamayı gösterir.The following example shows a trigger binding in a function.json file and an F# function that uses the binding. İşlevi sorgu dizesinde veya http name isteğinin gövdesinde bir parametre arar.The function looks for a name parameter either in the query string or the body of the HTTP request.

İşte function.json dosyası:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "res",
      "type": "http",
      "direction": "out"
    }
  ],
  "disabled": false
}

Yapılandırma bölümde, bu özellikleri açıklanmaktadır.The configuration section explains these properties.

İşte F# kod:Here's the F# code:

open System.Net
open System.Net.Http
open FSharp.Interop.Dynamic

let Run(req: HttpRequestMessage) =
    async {
        let q =
            req.GetQueryNameValuePairs()
                |> Seq.tryFind (fun kv -> kv.Key = "name")
        match q with
        | Some kv ->
            return req.CreateResponse(HttpStatusCode.OK, "Hello " + kv.Value)
        | None ->
            let! data = Async.AwaitTask(req.Content.ReadAsAsync<obj>())
            try
                return req.CreateResponse(HttpStatusCode.OK, "Hello " + data?name)
            with e ->
                return req.CreateErrorResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
    } |> Async.StartAsTask

Aşağıdaki örnekte gösterildiği project.json gibi, FSharp.Interop.Dynamic ve Dynamitey derlemelerine başvurmak için NuGet kullanan bir dosya gerekir:You need a project.json file that uses NuGet to reference the FSharp.Interop.Dynamic and Dynamitey assemblies, as shown in the following example:

{
  "frameworks": {
    "net46": {
      "dependencies": {
        "Dynamitey": "1.0.2",
        "FSharp.Interop.Dynamic": "3.0.0"
      }
    }
  }
}

Tetikleyici - JavaScript örneğiTrigger - JavaScript example

Aşağıdaki örnek, bir function. JSON dosyasındaki bir tetikleyici bağlamayı ve bağlamayı kullanan bir JavaScript işlevini gösterir.The following example shows a trigger binding in a function.json file and a JavaScript function that uses the binding. İşlevi sorgu dizesinde veya http name isteğinin gövdesinde bir parametre arar.The function looks for a name parameter either in the query string or the body of the HTTP request.

İşte function.json dosyası:Here's the function.json file:

{
    "disabled": false,    
    "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req"
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
    ]
}

Yapılandırma bölümde, bu özellikleri açıklanmaktadır.The configuration section explains these properties.

JavaScript kod aşağıdaki gibidir:Here's the JavaScript code:

module.exports = function(context, req) {
    context.log('Node.js HTTP trigger function processed a request. RequestUri=%s', req.originalUrl);

    if (req.query.name || (req.body && req.body.name)) {
        context.res = {
            // status defaults to 200 */
            body: "Hello " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
    context.done();
};

Trigger-Python örneğiTrigger - Python example

Aşağıdaki örnek, bir function. JSON dosyasındaki bir tetikleyici bağlamayı ve bağlamayı kullanan bir Python işlevini gösterir.The following example shows a trigger binding in a function.json file and a Python function that uses the binding. İşlevi sorgu dizesinde veya http name isteğinin gövdesinde bir parametre arar.The function looks for a name parameter either in the query string or the body of the HTTP request.

İşte function.json dosyası:Here's the function.json file:

{
    "scriptFile": "__init__.py",
    "disabled": false,    
    "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req"
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
    ]
}

Yapılandırma bölümde, bu özellikleri açıklanmaktadır.The configuration section explains these properties.

Python kodu aşağıda verilmiştir:Here's the Python code:

import logging
import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        return func.HttpResponse(f"Hello {name}!")
    else:
        return func.HttpResponse(
            "Please pass a name on the query string or in the request body",
            status_code=400
        )

Trigger-Java örnekleriTrigger - Java examples

Aşağıdaki örneklerde, bir function. JSON dosyasındaki http tetikleyicisi bağlamayı ve bağlamayı kullanan ilgili Java işlevleri gösterilmektedir.The following examples show the HTTP trigger binding in a function.json file and the respective Java functions that use the binding.

İşte function.json dosyası:Here's the function.json file:

{
    "disabled": false,    
    "bindings": [
        {
            "authLevel": "anonymous",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req"
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
    ]
}

Sorgu dizesinden parametreyi oku (Java)Read parameter from the query string (Java)

Bu örnek, sorgu dizesinden adlı idbir parametresini okur ve bu parametreyi, içerik türüyle application/jsonistemciye döndürülen bir JSON belgesi oluşturmak için kullanır.This example reads a parameter, named id, from the query string, and uses it to build a JSON document returned to the client, with content type application/json.

    @FunctionName("TriggerStringGet")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", 
              methods = {HttpMethod.GET}, 
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        
        // Item list
        context.getLogger().info("GET parameters are: " + request.getQueryParameters());

        // Get named parameter
        String id = request.getQueryParameters().getOrDefault("id", "");

        // Convert and display
        if (id.isEmpty()) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        } 
        else {
            // return JSON from to the client
            // Generate document
            final String name = "fake_name";
            final String jsonDocument = "{\"id\":\"" + id + "\", " + 
                                         "\"description\": \"" + name + "\"}";
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(jsonDocument)
                          .build();
        }
    }

POST isteğinden gövdeyi oku (Java)Read body from a POST request (Java)

Bu örnek, bir POST isteğinin gövdesini bir Stringolarak okur ve içerik türü application/jsonile istemciye döndürülen bir JSON belgesi oluşturmak için kullanır.This example reads the body of a POST request, as a String, and uses it to build a JSON document returned to the client, with content type application/json.

    @FunctionName("TriggerStringPost")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", 
              methods = {HttpMethod.POST}, 
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        
        // Item list
        context.getLogger().info("Request body is: " + request.getBody().orElse(""));

        // Check request body
        if (!request.getBody().isPresent()) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        } 
        else {
            // return JSON from to the client
            // Generate document
            final String body = request.getBody().get();
            final String jsonDocument = "{\"id\":\"123456\", " + 
                                         "\"description\": \"" + body + "\"}";
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(jsonDocument)
                          .build();
        }
    }

Bir rotadaki parametreyi oku (Java)Read parameter from a route (Java)

Bu örnek, adlı idzorunlu bir parametreyi ve yol yolundan isteğe bağlı bir parametreyi name okur ve içerik türü application/jsonile istemciye döndürülen bir JSON belgesi oluşturmak için bunları kullanır.This example reads a mandatory parameter, named id, and an optional parameter name from the route path, and uses them to build a JSON document returned to the client, with content type application/json. TT

    @FunctionName("TriggerStringRoute")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", 
              methods = {HttpMethod.GET}, 
              authLevel = AuthorizationLevel.ANONYMOUS,
              route = "trigger/{id}/{name=EMPTY}") // name is optional and defaults to EMPTY
            HttpRequestMessage<Optional<String>> request,
            @BindingName("id") String id,
            @BindingName("name") String name,
            final ExecutionContext context) {
        
        // Item list
        context.getLogger().info("Route parameters are: " + id);

        // Convert and display
        if (id == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        } 
        else {
            // return JSON from to the client
            // Generate document
            final String jsonDocument = "{\"id\":\"" + id + "\", " + 
                                         "\"description\": \"" + name + "\"}";
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(jsonDocument)
                          .build();
        }
    }

POST isteğinden POJO gövdesini okuyun (Java)Read POJO body from a POST request (Java)

Bu örnekte başvurulan ToDoItem sınıfının kodu aşağıda verilmiştir:Here is the code for the ToDoItem class, referenced in this example:


public class ToDoItem {

  private String id;
  private String description;  

  public ToDoItem(String id, String description) {
    this.id = id;
    this.description = description;
  }

  public String getId() {
    return id;
  }

  public String getDescription() {
    return description;
  }
  
  @Override
  public String toString() {
    return "ToDoItem={id=" + id + ",description=" + description + "}";
  }
}

Bu örnek, POST isteğinin gövdesini okur.This example reads the body of a POST request. İstek gövdesi bir ToDoItem nesneye otomatik olarak seri hale getirilir ve içerik türü application/jsonile istemciye döndürülür.The request body gets automatically de-serialized into a ToDoItem object, and is returned to the client, with content type application/json. Parametresi, HttpMessageResponse.Builder sınıfının body özelliğine atandığı için işlevler çalışma zamanı tarafından serileştirilir. ToDoItemThe ToDoItem parameter is serialized by the Functions runtime as it is assigned to the body property of the HttpMessageResponse.Builder class.

    @FunctionName("TriggerPojoPost")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", 
              methods = {HttpMethod.POST}, 
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<ToDoItem>> request,
            final ExecutionContext context) {
        
        // Item list
        context.getLogger().info("Request body is: " + request.getBody().orElse(null));

        // Check request body
        if (!request.getBody().isPresent()) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        } 
        else {
            // return JSON from to the client
            // Generate document
            final ToDoItem body = request.getBody().get();
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(body)
                          .build();
        }
    }

Tetikleyici - öznitelikleriTrigger - attributes

C# Sınıf kitaplıkları' nda httptrigger özniteliğini kullanın.In C# class libraries, use the HttpTrigger attribute.

Öznitelik Oluşturucu parametrelerinde yetkilendirme düzeyini ve izin verilen HTTP yöntemlerini ayarlayabilirsiniz ve Web kancası türü ve yol şablonu için özellikler vardır.You can set the authorization level and allowable HTTP methods in attribute constructor parameters, and there are properties for webhook type and route template. Bu ayarlar hakkında daha fazla bilgi için bkz. tetikleyici-yapılandırma.For more information about these settings, see Trigger - configuration. Bir yöntem imzasında HttpTrigger bir özniteliği aşağıda verilmiştir:Here's an HttpTrigger attribute in a method signature:

[FunctionName("HttpTriggerCSharp")]
public static Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequest req)
{
    ...
}

Tam bir örnek için bkz. tetikleyici - C# örneği.For a complete example, see Trigger - C# example.

Tetikleyici - yapılandırmaTrigger - configuration

Aşağıdaki tabloda ayarladığınız bağlama yapılandırma özelliklerini açıklayan function.json dosya ve HttpTrigger özniteliği.The following table explains the binding configuration properties that you set in the function.json file and the HttpTrigger attribute.

Function.JSON özelliğifunction.json property Öznitelik özelliğiAttribute property AçıklamaDescription
typetype yokn/a Gerekli-olarak httpTriggerayarlanmalıdır.Required - must be set to httpTrigger.
directiondirection yokn/a Gerekli-olarak inayarlanmalıdır.Required - must be set to in.
namename yokn/a Required-istek veya istek gövdesi için işlev kodunda kullanılan değişken adı.Required - the variable name used in function code for the request or request body.
authLevelauthLevel AuthLevelAuthLevel , Varsa, işlevi çağırmak için istekte hangi anahtarların mevcut olması gerektiğini belirler.Determines what keys, if any, need to be present on the request in order to invoke the function. Yetkilendirme düzeyi aşağıdaki değerlerden biri olabilir:The authorization level can be one of the following values:
  • anonymous—API anahtarı gerekli değildir.anonymous—No API key is required.
  • function—İşleve özgü bir API anahtarı gereklidir.function—A function-specific API key is required. Hiçbiri sağlanmazsa varsayılan değer budur.This is the default value if none is provided.
  • admin—Ana anahtar gereklidir.admin—The master key is required.
Daha fazla bilgi için Yetkilendirme anahtarlarıhakkında bölümüne bakın.For more information, see the section about authorization keys.
methodsmethods MethodsMethods İşlevin yanıt verdiği HTTP yöntemlerinin dizisi.An array of the HTTP methods to which the function responds. Belirtilmemişse, işlev tüm HTTP yöntemlerine yanıt verir.If not specified, the function responds to all HTTP methods. Bkz. http uç noktasını özelleştirme.See customize the http endpoint.
routeroute YoluRoute İşlevinizin hangi istek URL 'Lerine yanıt vereceğini denetleyen yol şablonunu tanımlar.Defines the route template, controlling to which request URLs your function responds. Hiçbiri sağlanmadıysa <functionname>varsayılan değer.The default value if none is provided is <functionname>. Daha fazla bilgi için bkz. http uç noktasını özelleştirme.For more information, see customize the http endpoint.
webHookTypewebHookType Web kancası türüWebHookType Yalnızca sürüm 1. x çalışma zamanı için desteklenir.Supported only for the version 1.x runtime.

HTTP tetikleyicisini, belirtilen sağlayıcı için bir Web kancası alıcısı olarak davranacak şekilde yapılandırır.Configures the HTTP trigger to act as a webhook receiver for the specified provider. Bu özelliği ayarlarsanız methods özelliği ayarlamazsanız.Don't set the methods property if you set this property. Web kancası türü aşağıdaki değerlerden biri olabilir:The webhook type can be one of the following values:
  • genericJson—Belirli bir sağlayıcı için mantığı olmayan genel amaçlı bir Web kancası uç noktası.genericJson—A general-purpose webhook endpoint without logic for a specific provider. Bu ayar, application/json istekleri yalnızca http post kullanan ve içerik türüyle kısıtlar.This setting restricts requests to only those using HTTP POST and with the application/json content type.
  • github—İşlevi GitHub Web kancalarınayanıt verir.github—The function responds to GitHub webhooks. AUTHLEVEL özelliğini GitHub Web kancaları ile kullanmayın.Do not use the authLevel property with GitHub webhooks. Daha fazla bilgi için bu makalenin ilerleyen kısımlarında bulunan GitHub Web kancaları bölümüne bakın.For more information, see the GitHub webhooks section later in this article.
  • slack—İşlev, bolluk web kancalarınayanıt veriyor.slack—The function responds to Slack webhooks. AUTHLEVEL özelliğini bolluk web kancaları ile kullanmayın.Do not use the authLevel property with Slack webhooks. Daha fazla bilgi için bu makalenin ilerleyen kısımlarında yer alarak bolluk web kancaları bölümüne bakın.For more information, see the Slack webhooks section later in this article.

Tetikleyici - kullanımTrigger - usage

Ve C# F# işlevleri için, tetikleyici giriş türünü ya da HttpRequest özel bir tür olacak şekilde bildirebilirsiniz.For C# and F# functions, you can declare the type of your trigger input to be either HttpRequest or a custom type. Seçeneğini HttpRequestbelirlerseniz, istek nesnesine tam erişim edinirsiniz.If you choose HttpRequest, you get full access to the request object. Özel bir tür için, çalışma zamanı nesne özelliklerini ayarlamak için JSON istek gövdesini ayrıştırmaya çalışır.For a custom type, the runtime tries to parse the JSON request body to set the object properties.

JavaScript işlevleri için, Işlevler çalışma zamanı istek nesnesi yerine istek gövdesini sağlar.For JavaScript functions, the Functions runtime provides the request body instead of the request object. Daha fazla bilgi için bkz. JavaScript tetikleyici örneği.For more information, see the JavaScript trigger example.

HTTP uç noktasını özelleştirmeCustomize the HTTP endpoint

Varsayılan olarak, bir HTTP tetikleyicisi için bir işlev oluşturduğunuzda, işlev, formun bir yolu ile adreslenebilir:By default when you create a function for an HTTP trigger, the function is addressable with a route of the form:

http://<yourapp>.azurewebsites.net/api/<funcname>

Bu yolu, http tetikleyicisinin giriş bağlamasındaki isteğe bağlı route özelliği kullanarak özelleştirebilirsiniz.You can customize this route using the optional route property on the HTTP trigger's input binding. Örnek olarak, aşağıdaki function. JSON dosyası bir http tetikleyicisi için route bir özelliği tanımlar:As an example, the following function.json file defines a route property for an HTTP trigger:

{
    "bindings": [
    {
        "type": "httpTrigger",
        "name": "req",
        "direction": "in",
        "methods": [ "get" ],
        "route": "products/{category:alpha}/{id:int?}"
    },
    {
        "type": "http",
        "name": "res",
        "direction": "out"
    }
    ]
}

Bu yapılandırmayı kullanarak, işlev artık özgün yol yerine aşağıdaki rota ile adreslenebilir.Using this configuration, the function is now addressable with the following route instead of the original route.

http://<yourapp>.azurewebsites.net/api/products/electronics/357

Bu, işlev kodunun adreste, kategoride ve _kimliğinde_iki parametreyi desteklemesini sağlar. Parametrelerinizi kullanarak herhangi bir Web API yolu kısıtlaması kullanabilirsiniz.This allows the function code to support two parameters in the address, category and id. You can use any Web API Route Constraint with your parameters. Aşağıdaki C# işlev kodu her iki parametrenin de kullanımını sağlar.The following C# function code makes use of both parameters.

public static Task<IActionResult> Run(HttpRequest req, string category, int? id, ILogger log)
{
    if (id == null)
    {
        return (ActionResult)new OkObjectResult($"All {category} items were requested.");
    }
    else
    {
        return (ActionResult)new OkObjectResult($"{category} item with id = {id} has been requested.");
    }
    
    // -----
    log.LogInformation($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}");
}

Aynı rota parametrelerini kullanan Node. js işlev kodu aşağıda verilmiştir.Here is Node.js function code that uses the same route parameters.

module.exports = function (context, req) {

    var category = context.bindingData.category;
    var id = context.bindingData.id;

    if (!id) {
        context.res = {
            // status defaults to 200 */
            body: "All " + category + " items were requested."
        };
    }
    else {
        context.res = {
            // status defaults to 200 */
            body: category + " item with id = " + id + " was requested."
        };
    }

    context.done();
}

Varsayılan olarak, tüm işlev yollarına APIön eki eklenir.By default, all function routes are prefixed with api. Ayrıca, http.routePrefix Host. JSON dosyanızdaki özelliğini kullanarak ön eki özelleştirebilir veya kaldırabilirsiniz.You can also customize or remove the prefix using the http.routePrefix property in your host.json file. Aşağıdaki örnek, Host. JSON dosyasındaki önek için boş bir dize kullanarak API yol önekini kaldırır.The following example removes the api route prefix by using an empty string for the prefix in the host.json file.

{
    "http": {
    "routePrefix": ""
    }
}

İstemci kimlikleriyle çalışmaWorking with client identities

İşlev uygulamanız App Service kimlik doğrulaması/yetkilendirmekullanıyorsa, koddan kimliği doğrulanmış istemcilerle ilgili bilgileri görüntüleyebilirsiniz.If your function app is using App Service Authentication / Authorization, you can view information about authenticated clients from your code. Bu bilgiler, platform tarafından eklenen istek üstbilgileriolarak kullanılabilir.This information is available as request headers injected by the platform.

Ayrıca, bu bilgileri bağlama verilerinden okuyabilirsiniz.You can also read this information from binding data. Bu özellik yalnızca 2. x çalışma zamanı Işlevleri için kullanılabilir.This capability is only available to the Functions 2.x runtime. Bu, şu anda yalnızca .NET dilleri için de kullanılabilir.It is also currently only available for .NET languages.

.NET dillerde, bu bilgiler ClaimsPrincipalolarak sunulmaktadır.In .NET languages, this information is available as a ClaimsPrincipal. ClaimsPrincipal, aşağıdaki örnekte gösterildiği gibi istek bağlamının bir parçası olarak kullanılabilir:The ClaimsPrincipal is available as part of the request context as shown in the following example:

using System.Net;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;

public static IActionResult Run(HttpRequest req, ILogger log)
{
    ClaimsPrincipal identities = req.HttpContext.User;
    // ...
    return new OkObjectResult();
}

Alternatif olarak, ClaimsPrincipal yalnızca işlev imzasında ek bir parametre olarak eklenebilir:Alternatively, the ClaimsPrincipal can simply be included as an additional parameter in the function signature:

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
using Newtonsoft.Json.Linq;

public static void Run(JObject input, ClaimsPrincipal principal, ILogger log)
{
    // ...
    return;
}

Yetkilendirme anahtarlarıAuthorization keys

İşlevler, geliştirme sırasında HTTP işlev uç noktalarınıza erişmeyi daha zor hale getirmek için anahtarları kullanmanıza olanak sağlar.Functions lets you use keys to make it harder to access your HTTP function endpoints during development. Standart bir HTTP tetikleyicisi istekte böyle bir API anahtarının bulunmasını gerektirebilir.A standard HTTP trigger may require such an API key be present in the request.

Önemli

Anahtarlar geliştirme sırasında HTTP uç noktalarınızı gizleme konusunda yardımcı olabilir, ancak üretimde bir HTTP tetikleyicisini güvenli hale getirmenin bir yolu olarak tasarlanmamıştır.While keys may help obfuscate your HTTP endpoints during development, they are not intended as a way to secure an HTTP trigger in production. Daha fazla bilgi edinmek için bkz. üretimde BIR HTTP uç noktası güvenli hale getirme.To learn more, see Secure an HTTP endpoint in production.

Not

1. x çalışma zamanında, Web kancası sağlayıcıları, sağlayıcının neleri desteklediğine bağlı olarak çeşitli yollarla istekleri yetkilendirmek için anahtarlar kullanabilir.In the Functions 1.x runtime, webhook providers may use keys to authorize requests in a variety of ways, depending on what the provider supports. Bu, Web kancaları ve anahtarlarıkapsamına alınmıştır.This is covered in Webhooks and keys. Sürüm 2. x çalışma zamanı, Web kancası sağlayıcıları için yerleşik destek içermez.The version 2.x runtime does not include built-in support for webhook providers.

İki tür anahtar vardır:There are two types of keys:

  • Ana bilgisayar anahtarları: Bu anahtarlar, işlev uygulaması içindeki tüm işlevler tarafından paylaşılır.Host keys: These keys are shared by all functions within the function app. API anahtarı olarak kullanıldığında, bu, işlev uygulaması içindeki herhangi bir işleve erişime izin verir.When used as an API key, these allow access to any function within the function app.
  • İşlev anahtarları: Bu anahtarlar yalnızca tanımlandıkları belirli işlevler için geçerlidir.Function keys: These keys apply only to the specific functions under which they are defined. API anahtarı olarak kullanıldığında, bunlar yalnızca bu işleve erişime izin verir.When used as an API key, these only allow access to that function.

Her anahtar başvuru için adlandırılır ve işlev ve ana bilgisayar düzeyinde bir varsayılan anahtar ("varsayılan" olarak adlandırılır) vardır.Each key is named for reference, and there is a default key (named "default") at the function and host level. İşlev anahtarları ana bilgisayar anahtarlarına göre önceliklidir.Function keys take precedence over host keys. Aynı ada sahip iki anahtar tanımlandığında, işlev anahtarı her zaman kullanılır.When two keys are defined with the same name, the function key is always used.

Her işlev uygulamasının özel bir ana anahtarıda vardır.Each function app also has a special master key. Bu anahtar, çalışma zamanı API 'lerine _masteryönetim erişimi sağlayan adlı bir ana bilgisayar anahtarıdır.This key is a host key named _master, which provides administrative access to the runtime APIs. Bu anahtar iptal edilemez.This key cannot be revoked. Bir Yetkilendirme düzeyi adminbelirlediğinizde, istekler ana anahtarı kullanmalıdır; yetkilendirme hatasında başka herhangi bir anahtar oluşur.When you set an authorization level of admin, requests must use the master key; any other key results in authorization failure.

Dikkat

Ana anahtar tarafından verilen işlev uygulamanızda yükseltilmiş izinler nedeniyle, bu anahtarı üçüncü taraflarla paylaşmamalıdır veya yerel istemci uygulamalarında dağıtmanız gerekir.Due to the elevated permissions in your function app granted by the master key, you should not share this key with third parties or distribute it in native client applications. Yönetici yetkilendirme düzeyini seçerken dikkatli olun.Use caution when choosing the admin authorization level.

Anahtarları edinmeObtaining keys

Anahtarlar, Azure 'daki işlev uygulamanızın bir parçası olarak depolanır ve bekleyen olarak şifrelenir.Keys are stored as part of your function app in Azure and are encrypted at rest. Anahtarlarınızı görüntülemek, yenilerini oluşturmak veya yeni değerlere anahtar almak için, Azure Portal http ile tetiklenen işlevlerinizin birine gidin ve Yönet' i seçin.To view your keys, create new ones, or roll keys to new values, navigate to one of your HTTP-triggered functions in the Azure portal and select Manage.

Portalda işlev anahtarlarını yönetin.

Program aracılığıyla işlev anahtarlarını elde etmek için desteklenen bir API yok.There is no supported API for programmatically obtaining function keys.

API anahtarı yetkilendirmesiAPI key authorization

HTTP tetikleyici şablonlarının çoğu istekte bir API anahtarı gerektirir.Most HTTP trigger templates require an API key in the request. Bu nedenle, HTTP isteğiniz normalde aşağıdaki URL gibi görünür:So your HTTP request normally looks like the following URL:

https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?code=<API_KEY>

Anahtar, yukarıdaki gibi adlı codebir sorgu dizesi değişkenine dahil edilebilir.The key can be included in a query string variable named code, as above. Bir x-functions-key http başlığına da dahil edilebilir.It can also be included in an x-functions-key HTTP header. Anahtarın değeri, işlev için tanımlanan herhangi bir işlev anahtarı veya herhangi bir konak anahtarı olabilir.The value of the key can be any function key defined for the function, or any host key.

Anahtar gerektirmeyen anonim isteklere izin verebilirsiniz.You can allow anonymous requests, which do not require keys. Ana anahtarın kullanılmasını da gerekli kılabilirsiniz.You can also require that the master key be used. JSON bağlama içindeki authLevel özelliğini kullanarak varsayılan yetkilendirme düzeyini değiştirirsiniz.You change the default authorization level by using the authLevel property in the binding JSON. Daha fazla bilgi için bkz. tetikleyici-yapılandırma.For more information, see Trigger - configuration.

Not

İşlevler yerel olarak çalıştırılırken, yetkilendirme, belirtilen kimlik doğrulama düzeyi ayarından bağımsız olarak devre dışı bırakılır.When running functions locally, authorization is disabled regardless of the specified authentication level setting. Azure 'da yayımladıktan sonra, authLevel tetikleyicinizdeki ayar zorlanır.After publishing to Azure, the authLevel setting in your trigger is enforced.

Üretimde bir HTTP uç noktasının güvenliğini sağlamaSecure an HTTP endpoint in production

İşlev uç noktalarınızı üretimde tam olarak güvenli hale getirmek için aşağıdaki işlev uygulama düzeyi güvenlik seçeneklerinden birini uygulamayı göz önünde bulundurmanız gerekir:To fully secure your function endpoints in production, you should consider implementing one of the following function app-level security options:

  • İşlev uygulamanız için App Service kimlik doğrulaması/yetkilendirme 'yi açın.Turn on App Service Authentication / Authorization for your function app. App Service platformu, istemcilerin kimliğini doğrulamak için Azure Active Directory (AAD) ve çeşitli üçüncü taraf kimlik sağlayıcılarını kullanmanıza olanak sağlar.The App Service platform lets use Azure Active Directory (AAD) and several third-party identity providers to authenticate clients. İşlevleriniz için özel yetkilendirme kuralları uygulamak üzere bunu kullanabilir ve işlev kodunuzda kullanıcı bilgileriyle çalışabilirsiniz.You can use this to implement custom authorization rules for your functions, and you can work with user information from your function code. Daha fazla bilgi için bkz. Azure App Service 'Da kimlik doğrulama ve yetkilendirme ve istemci kimlikleriyle çalışma.To learn more, see Authentication and authorization in Azure App Service and Working with client identities.

  • İsteklerin kimliğini doğrulamak için Azure API Management (APıM) kullanın.Use Azure API Management (APIM) to authenticate requests. APıM, gelen istekler için çeşitli API güvenliği seçenekleri sağlar.APIM provides a variety of API security options for incoming requests. Daha fazla bilgi için bkz. API Management kimlik doğrulama ilkeleri.To learn more, see API Management authentication policies. APıM ile, işlev uygulamanızı yalnızca APıM örneğinizin IP adresinden gelen istekleri kabul edecek şekilde yapılandırabilirsiniz.With APIM in place, you can configure your function app to accept requests only from the IP address of your APIM instance. Daha fazla bilgi için bkz. IP adresi kısıtlamaları.To learn more, see IP address restrictions.

  • İşlev uygulamanızı bir Azure App Service Ortamı dağıtın (Ao).Deploy your function app to an Azure App Service Environment (ASE). ATıCı, işlevlerinizin çalıştırılacağı adanmış bir barındırma ortamı sağlar.ASE provides a dedicated hosting environment in which to run your functions. Ao, tüm gelen isteklerin kimliğini doğrulamak için kullanabileceğiniz tek bir ön uç ağ geçidi yapılandırmanıza olanak tanır.ASE lets you configure a single front-end gateway that you can use to authenticate all incoming requests. Daha fazla bilgi için bkz. App Service ortamı Için Web uygulaması güvenlik duvarı (WAF) yapılandırma.For more information, see Configuring a Web Application Firewall (WAF) for App Service Environment.

Bu işlev uygulama düzeyi güvenlik yöntemlerinden birini kullanırken, HTTP ile tetiklenen işlev kimlik doğrulama düzeyini olarak anonymousayarlamanız gerekir.When using one of these function app-level security methods, you should set the HTTP-triggered function authentication level to anonymous.

Web KancalarıWebhooks

Not

Web kancası modu yalnızca Işlevler çalışma zamanının sürüm 1. x 'i için kullanılabilir.Webhook mode is only available for version 1.x of the Functions runtime. Bu değişiklik, sürüm 2. x ' teki HTTP tetikleyicilerinin performansını geliştirmek için yapılmıştır.This change was made to improve the performance of HTTP triggers in version 2.x.

Sürüm 1. x içinde, Web kancası şablonları Web kancası yükleri için ek doğrulama sağlar.In version 1.x, webhook templates provide additional validation for webhook payloads. 2. x sürümünde, temel HTTP tetikleyicisi hala çalışıyor ve Web kancaları için önerilen yaklaşım.In version 2.x, the base HTTP trigger still works and is the recommended approach for webhooks.

GitHub Web kancalarıGitHub webhooks

GitHub Web kancalarına yanıt vermek için, önce bir HTTP tetikleyicisiyle işlevinizi oluşturun ve Web Kancatürü özelliğini olarak githubayarlayın.To respond to GitHub webhooks, first create your function with an HTTP Trigger, and set the webHookType property to github. Ardından, URL ve API anahtarını GitHub deponuzun Web kancası Ekle sayfasına kopyalayın.Then copy its URL and API key into the Add webhook page of your GitHub repository.

Bolluk web kancalarıSlack webhooks

Bolluk Web kancası sizin belirtebilmenizi sağlamak yerine sizin için bir belirteç üretir. bu nedenle, bir işleve özgü anahtarı bolluk 'ten belirtece göre yapılandırmanız gerekir.The Slack webhook generates a token for you instead of letting you specify it, so you must configure a function-specific key with the token from Slack. Bkz. Yetkilendirme anahtarları.See Authorization keys.

Web kancaları ve anahtarlarıWebhooks and keys

Web kancası yetkilendirmesi, HTTP tetikleyicisinin bir parçası olan Web kancası alıcısı bileşeni tarafından işlenir ve mekanizma Web kancası türüne göre farklılık gösterir.Webhook authorization is handled by the webhook receiver component, part of the HTTP trigger, and the mechanism varies based on the webhook type. Her mekanizma bir anahtara bağlıdır.Each mechanism does rely on a key. Varsayılan olarak, "varsayılan" adlı işlev anahtarı kullanılır.By default, the function key named "default" is used. Farklı bir anahtar kullanmak için, Web kancası sağlayıcısını aşağıdaki yollarla anahtar adını istekle birlikte gönderecek şekilde yapılandırın:To use a different key, configure the webhook provider to send the key name with the request in one of the following ways:

  • Sorgu dizesi: Sağlayıcı, clientid https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>anahtar adını sorgu dizesi parametresinde (gibi) geçirir.Query string: The provider passes the key name in the clientid query string parameter, such as https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>.
  • İstek üst bilgisi: Sağlayıcı, x-functions-clientid üst bilgide anahtar adını geçirir.Request header: The provider passes the key name in the x-functions-clientid header.

Tetikleme-sınırlarTrigger - limits

HTTP istek uzunluğu 100 MB (104.857.600 bayt) ile sınırlıdır ve URL uzunluğu 4 KB (4.096 bayt) ile sınırlıdır.The HTTP request length is limited to 100 MB (104,857,600 bytes), and the URL length is limited to 4 KB (4,096 bytes). Bu sınırlar, çalışma zamanının httpRuntime Web. config dosyasınınöğesi tarafından belirtilir.These limits are specified by the httpRuntime element of the runtime's Web.config file.

HTTP tetikleyicisini kullanan bir işlev yaklaşık 2,5 dakika içinde tamamlanmazsa, ağ geçidi zaman aşımına uğrar ve bir HTTP 502 hatası döndürür.If a function that uses the HTTP trigger doesn't complete within about 2.5 minutes, the gateway will time out and return an HTTP 502 error. İşlev çalışmaya devam edecektir, ancak HTTP yanıtı dönemeyecektir.The function will continue running but will be unable to return an HTTP response. Uzun süre çalışan işlevlerde, zaman uyumsuz desenleri izlemenizi ve isteğin durumuna ping ekleyebileceğiniz bir konum döndürmenizi öneririz.For long-running functions, we recommend that you follow async patterns and return a location where you can ping the status of the request. Bir işlevin ne kadar süreyle çalıştırılabilmesini hakkında bilgi için bkz. ölçek ve barındırma-tüketim planı.For information about how long a function can run, see Scale and hosting - Consumption plan.

Tetikleyici - host.json özellikleriTrigger - host.json properties

Host. JSON dosyası http tetikleme davranışını denetleyen ayarları içerir.The host.json file contains settings that control HTTP trigger behavior.

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
ÖzellikProperty VarsayılanDefault AçıklamaDescription
routeprefix öğesiroutePrefix apiapi Tüm yollar için geçerli bir rota öneki.The route prefix that applies to all routes. Varsayılan ön ekini kaldırmak için boş bir dize kullanın.Use an empty string to remove the default prefix.
maxOutstandingRequestsmaxOutstandingRequests 200*200* Belirli bir zamanda tutulan bekleyen istek sayısı.The maximum number of outstanding requests that are held at any given time. Bu sınır, kuyruğa alınır, ancak yürütme devam eden yürütmeler birinde yanı sıra başlamamış olan istekleri içerir.This limit includes requests that are queued but have not started executing, as well as any in progress executions. "Çok meşgul" bir 429 yanıtı bu sınırın üzerindeki tüm gelen istekler reddedilir.Any incoming requests over this limit are rejected with a 429 "Too Busy" response. Zamana bağlı bir yeniden deneme stratejileri kullanmak istemiyorsunuz arayanlara izin verir ve ayrıca en fazla istek gecikme denetlemenize yardımcı olur.That allows callers to employ time-based retry strategies, and also helps you to control maximum request latencies. Bu, yalnızca betik konak yürütme yolu içinde oluşan queuing denetler.This only controls queuing that occurs within the script host execution path. ASP.NET istek kuyruğu gibi diğer kuyrukları, efekt ve bu ayar etkilenmez görünmeye devam edecektir.Other queues such as the ASP.NET request queue will still be in effect and unaffected by this setting. *Varsayılan 1.x sürümü için sınırsız (-1).*The default for version 1.x is unbounded (-1). Varsayılan sürüm 2.x bir tüketim planında 200'dür.The default for version 2.x in a consumption plan is 200. Varsayılan sürüm için ayrılmış bir planda 2.x sınırsızdır (-1).The default for version 2.x in a dedicated plan is unbounded (-1).
maxConcurrentRequestsmaxConcurrentRequests 100*100* En fazla paralel olarak yürütülen http işlev sayısı.The maximum number of http functions that will be executed in parallel. Bu, kaynak kullanımını yönetmenize yardımcı olabilir denetimi eşzamanlılık için sağlar.This allows you to control concurrency, which can help manage resource utilization. Örneğin, sistem kaynakları (cpu/bellek/yuvaları) çok fazla eşzamanlılık çok fazla olduğunda sorunlarına neden olur, kullanan bir http işleve sahip olabilir.For example, you might have an http function that uses a lot of system resources (memory/cpu/sockets) such that it causes issues when concurrency is too high. Veya hizmet bir üçüncü tarafa Giden istekleri oluşturan bir işlev olabilir ve bu çağrıları oranı sınırlı olması gerekir.Or you might have a function that makes outbound requests to a third party service, and those calls need to be rate limited. Bu gibi durumlarda, burada bir kısıtlama uygulama yardımcı olabilir.In these cases, applying a throttle here can help. *Varsayılan 1.x sürümü için sınırsız (-1).*The default for version 1.x is unbounded (-1). Varsayılan sürüm 2.x bir tüketim planında 100'dür.The default for version 2.x in a consumption plan is 100. Varsayılan sürüm için ayrılmış bir planda 2.x sınırsızdır (-1).The default for version 2.x in a dedicated plan is unbounded (-1).
dynamicThrottlesEnableddynamicThrottlesEnabled TRUE*true* Etkinleştirildiğinde, istek işleme ardışık düzenli aralıklarla sistem performansını denetlemek için bağlantı/iş parçacığı/işlemler/bellek/cpu/vb. gibi sayaçları ve bu sayaçlar, herhangi bir yerleşik yüksek eşiği (% 80), üzerinde olması durumunda istekleri bu ayarı neden olacaktır Sayaç normal düzeylerine geri dönene kadar "Çok meşgul" bir 429 yanıtı reddetti.When enabled, this setting causes the request processing pipeline to periodically check system performance counters like connections/threads/processes/memory/cpu/etc. and if any of those counters are over a built-in high threshold (80%), requests will be rejected with a 429 "Too Busy" response until the counter(s) return to normal levels. *Varsayılan 1.x sürümü için false.*The default for version 1.x is false. Varsayılan tüketim planında 2.x sürümü için geçerlidir.The default for version 2.x in a consumption plan is true. Varsayılan sürüm için ayrılmış bir planda 2.x false'tur.The default for version 2.x in a dedicated plan is false.

OutputOutput

Http istek göndericisine yanıt vermek için HTTP çıkış bağlamasını kullanın.Use the HTTP output binding to respond to the HTTP request sender. Bu bağlama bir HTTP tetikleyicisi gerektirir ve tetikleyicinin isteğiyle ilişkili yanıtı özelleştirmenize olanak sağlar.This binding requires an HTTP trigger and allows you to customize the response associated with the trigger's request. HTTP çıkış bağlaması sağlanmazsa, bir HTTP tetikleyicisi, 1. x Işlevlerinde boş bir gövdele HTTP 200 Tamam 204 veya 2. x Işlevleri 'nde boş bir gövdeye sahip Içerik yok ' u döndürür.If an HTTP output binding is not provided, an HTTP trigger returns HTTP 200 OK with an empty body in Functions 1.x, or HTTP 204 No Content with an empty body in Functions 2.x.

Çıkış - yapılandırmaOutput - configuration

Aşağıdaki tabloda, function. JSON dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.The following table explains the binding configuration properties that you set in the function.json file. Sınıf C# kitaplıkları için, bu function. JSON özelliklerine karşılık gelen bir öznitelik özelliği yok.For C# class libraries, there are no attribute properties that correspond to these function.json properties.

ÖzellikProperty AçıklamaDescription
typetype Ayarlanmalıdır http.Must be set to http.
directiondirection Ayarlanmalıdır out.Must be set to out.
namename Yanıt için işlev kodunda kullanılan değişken adı veya $return dönüş değerini kullanmak.The variable name used in function code for the response, or $return to use the return value.

Çıkış - kullanımOutput - usage

HTTP yanıtı göndermek için, dil standardı yanıt düzenlerini kullanın.To send an HTTP response, use the language-standard response patterns. Veya C# C# betik içinde, işlev dönüş türü IActionResult veya. Task<IActionResult>In C# or C# script, make the function return type IActionResult or Task<IActionResult>. ' C#De, dönüş değeri özniteliği gerekli değildir.In C#, a return value attribute isn't required.

Örneğin, bkz. tetikleyici örneği.For example responses, see the trigger example.

Sonraki adımlarNext steps

Azure işlevleri Tetikleyicileri ve bağlamaları hakkında daha fazla bilgi edininLearn more about Azure functions triggers and bindings