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

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

Yanıt için HTTP tetikleyicisi özelleştirilebilir Web kancaları.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 makalede kod, .NET Core kullanan işlevler 2.x sözdizimi için varsayılan olarak.The code in this article defaults to Functions 2.x syntax which uses .NET Core. 1.x söz dizimi hakkında daha fazla bilgi için bkz: 1.x işlev şablonları.For information on the 1.x syntax, see the 1.x functions templates.

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

HTTP bağlantıları sağlanır Microsoft.Azure.WebJobs.Extensions.Http NuGet paketi sürüm 1.x.The HTTP bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Http NuGet package, version 1.x. Paket için kaynak kodu konusu azure webjobs sdk uzantıları GitHub deposu.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ğlantıları sağlanır Microsoft.Azure.WebJobs.Extensions.Http NuGet paketi sürüm 3.x.The HTTP bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Http NuGet package, version 3.x. Paket için kaynak kodu konusu azure webjobs sdk uzantıları GitHub deposu.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 olan bir HTTP isteği bir işlev çağırma sağlar.The HTTP trigger lets you invoke a function with an HTTP request. HTTP tetikleyicisi, sunucusuz API oluşturma ve Web kancaları için yanıtlamak için kullanabilirsiniz.You can use an HTTP trigger to build serverless APIs and respond to webhooks.

Varsayılan olarak, bir HTTP tetikleyicisi işlevlerini boş bir gövdeye sahip HTTP 200 OK döndürür 1.x veya işlev boş bir gövdeye sahip HTTP 204 Hayır içerik 2.x.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 yapılandırma bir HTTP çıktı bağlaması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 örnekte gösterildiği bir C# işlevi , arayan bir name parametresi sorgu dizesi veya HTTP isteğinin gövdesi.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ğeri için çıkış bağlaması kullanılır, ancak bir dönüş değeri öznitelik 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 tetikleyici bağlamasında gösterir. bir function.json dosyası ve bir C# betik işlevi bağlama kullanan.The following example shows a trigger binding in a function.json file and a C# script function that uses the binding. İşlev arayan bir name parametresi sorgu dizesi veya HTTP isteğinin gövdesi.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.

İçin bağlanan bir C# kodu işte 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");
}

Özel bir nesne yerine adlarınıza bağlayabileceğiniz HttpRequest.You can bind to a custom object instead of HttpRequest. Bu nesne istek 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, çıktı bağlama ve 200 durum koduyla birlikte yanıt gövdesi olarak döndürülen HTTP yanıtına bir tür geçirilebilir.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 tetikleyici bağlamasında gösterir. bir function.json dosyası ve bir F# işlevi bağlama kullanan.The following example shows a trigger binding in a function.json file and an F# function that uses the binding. İşlev arayan bir name parametresi sorgu dizesi veya HTTP isteğinin gövdesi.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

Gereksinim duyduğunuz bir project.json NuGet başvurmak için kullanılan dosya FSharp.Interop.Dynamic ve Dynamitey derlemeler, aşağıdaki örnekte gösterildiği gibi: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 tetikleyici bağlamasında gösterir. bir function.json dosyası ve bir JavaScript işlevi bağlama kullanan.The following example shows a trigger binding in a function.json file and a JavaScript function that uses the binding. İşlev arayan bir name parametresi sorgu dizesi veya HTTP isteğinin gövdesi.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();
};

Tetikleyici - Python örnekTrigger - Python example

Aşağıdaki örnek, bir tetikleyici bağlamasında gösterir. bir function.json dosyası ve bir funkce Pythonu bağlama kullanan.The following example shows a trigger binding in a function.json file and a Python function that uses the binding. İşlev arayan bir name parametresi sorgu dizesi veya HTTP isteğinin gövdesi.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 kod aşağıdaki gibidir: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
        )

Tetikleyici - Java örnekleriTrigger - Java examples

Aşağıdaki örnekler bağlama HTTP tetikleyicisi bir function.json dosya ve ilgili Java işlevleri bağlama kullanın.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 dizesi (Java) parametresinden okumaRead parameter from the query string (Java)

Bu örnek adlı bir parametre okur idkullanır ve sorgu dizesi bir JSON belgesi oluşturmak için döndürülen içerik türüyle istemciye application/json.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();
        }
    }

Gövde, bir POST isteği (Java) okuyunRead body from a POST request (Java)

Bu örnek olarak bir POST isteğinin gövdesi okuduğu bir Stringve istemci, içerik türü ile döndürülen bir JSON belgesi oluşturmak için kullandığı application/json.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();
        }
    }

Parametre bir yol (Java) okuyunRead parameter from a route (Java)

Bu örnek adlı zorunlu bir parametre okur idve isteğe bağlı bir parametre name rota yolu ve kullandığı bunları bir JSON belgesi oluşturmak için döndürülen içerik türüyle istemciye application/json.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();
        }
    }

Okuma POJO'ya gövdesinden bir POST isteği (Java)Read POJO body from a POST request (Java)

Kodu işte ToDoItem sınıfı, bu örnekte, başvurulan: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, bir POST isteğinin gövdesi okur.This example reads the body of a POST request. İstek gövdesi otomatik olarak serbest içine serileştirilmiş alır bir ToDoItem nesnesini ve içerik türüyle istemciye döndürülen application/json.The request body gets automatically de-serialized into a ToDoItem object, and is returned to the client, with content type application/json. ToDoItem Parametresi atandığı gibi işlevler çalışma zamanı tarafından seri body özelliği HttpMessageResponse.Builder sınıfı.The 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

İçinde C# sınıfı kitaplıklar, kullanın HttpTrigger özniteliği.In C# class libraries, use the HttpTrigger attribute.

Web kancası türü ve rota şablonu için özelliklerin vardır ve yetkilendirme düzeyi ve izin verilen HTTP yöntemleri öznitelik oluşturucu parametresi ayarlayabilirsiniz.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. İşte bir HttpTrigger özniteliği bir yöntem imzası: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 - kümesine olmalıdır httpTrigger.Required - must be set to httpTrigger.
directiondirection yokn/a Gerekli - kümesine olmalıdır in.Required - must be set to in.
namename yokn/a Gereklidir - değişken adı işlev kodu isteği veya istek gövdesi için kullanılır.Required - the variable name used in function code for the request or request body.
authLevelauthLevel authLevelAuthLevel Anahtarlar, varsa, işlevin çalıştırılabilmesi için istekte bulunması gerekenleri 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—Hiçbir API anahtarı gereklidir.anonymous—No API key is required.
  • function—İşleve özgü API anahtarı gereklidir.function—A function-specific API key is required. Belirtilmezse 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 konudaki yetkilendirme anahtarları.For more information, see the section about authorization keys.
methodsmethods MethodsMethods Bir dizi işlev yanıt vereceği HTTP yöntemleri.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ına özelleştirme.See customize the http endpoint.
routeroute yolRoute İstek, işlevinizin yanıt URL'lerini denetleme için rota şablonu tanımlar.Defines the route template, controlling to which request URLs your function responds. Varsayılan değer sağlanmazsa <functionname>.The default value if none is provided is <functionname>. Daha fazla bilgi için http uç noktasına özelleştirme.For more information, see customize the http endpoint.
webHookTypewebHookType WebHookTypeWebHookType Yalnızca sürüm 1.x çalışma zamanı için desteklenmiyor.Supported only for the version 1.x runtime.

HTTP tetikleyicisi olarak davranacak şekilde yapılandırır bir Web kancası belirtilen sağlayıcının alıcı.Configures the HTTP trigger to act as a webhook receiver for the specified provider. Ayarlamamanız methods bu özelliği ayarlarsanız özelliği.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—Genel amaçlı bir Web kancası uç noktası olmadan belirli bir sağlayıcı için mantığı.genericJson—A general-purpose webhook endpoint without logic for a specific provider. Bu ayar, yalnızca HTTP POST ve ile kullanmak için istekleri kısıtlar application/json içerik türü.This setting restricts requests to only those using HTTP POST and with the application/json content type.
  • github—İşlev yanıtlar GitHub Web kancası.github—The function responds to GitHub webhooks. Kullanmayın authLevel GitHub Web kancası özellik.Do not use the authLevel property with GitHub webhooks. Daha fazla bilgi için bu makalenin devamındaki GitHub Web kancaları bölümüne bakın.For more information, see the GitHub webhooks section later in this article.
  • slack—İşlev yanıtlar Slack Web kancaları.slack—The function responds to Slack webhooks. Kullanmayın authLevel Slack Web kancaları ile özelliği.Do not use the authLevel property with Slack webhooks. Daha fazla bilgi için bu makalenin devamındaki Slack Web kancaları bölümüne bakın.For more information, see the Slack webhooks section later in this article.

Tetikleyici - kullanımTrigger - usage

İçin C# ve F# İşlevler, ya da giriş, tetikleyici türü bildirebilirsiniz HttpRequest veya özel bir tür.For C# and F# functions, you can declare the type of your trigger input to be either HttpRequest or a custom type. Seçerseniz HttpRequest, istek nesnesi tam erişim elde edersiniz.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ırmak ç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 istek gövdesi istek nesnesi yerine işlevler çalışma zamanı sağlar.For JavaScript functions, the Functions runtime provides the request body instead of the request object. Daha fazla bilgi için JavaScript tetikleyicisi örneğinde.For more information, see the JavaScript trigger example.

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

Bir işlev için bir HTTP tetikleyicisi oluşturduğunuzda varsayılan olarak işlev biçiminde bir yol 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 yol isteğe bağlı kullanarak özelleştirebileceğiniz route HTTP tetikleyicisi özellikte bağlama giriş.You can customize this route using the optional route property on the HTTP trigger's input binding. Örneğin, aşağıdaki function.json dosyasını tanımlayan bir route özelliği HTTP tetikleyicisi için: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 artık özgün yol yerine aşağıdaki yol ile adreslenebilir işlevdir.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

Böylece, iki parametre adresi desteklemek işlev kodunu kategori ve kimliği. Kullanabilirsiniz Web API rota kısıtlaması , parametrelere sahip.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 kodunu her iki parametre kullanır.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}");
}

Node.js işlevi aynı yol parametreleri kullanan bir kod 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şlevi yollar ile ön ekli API.By default, all function routes are prefixed with api. Ayrıca özelleştirme veya önekini kullanarak kaldırma http.routePrefix özelliğinde, host.json dosya.You can also customize or remove the prefix using the http.routePrefix property in your host.json file. Aşağıdaki örnek kaldırır API ön eki için boş bir dize kullanarak rota öneki host.json dosya.The following example removes the api route prefix by using an empty string for the prefix in the host.json file.

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

İstemci kimlikleri ile çalışmaWorking with client identities

İşlev uygulamanızı kullanıyorsa App Service kimlik doğrulaması / yetkilendirme, kodunuzdan kimlik doğrulamasından geçen istemcilerin 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 olarak kullanılabilir istek üst platform tarafından eklenen.This information is available as request headers injected by the platform.

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

Bu bilgiler .NET dillerinde olarak kullanılabilir bir ClaimsPrincipal.In .NET languages, this information is available as a ClaimsPrincipal. ClaimsPrincipal kullanılabilir aşağıdaki örnekte gösterildiği gibi istek bağlamının bir parçası olarak: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ı ek bir parametre olarak dahil edilebilir: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şlevi uç noktalarınıza erişmek daha zor hale getirmek için anahtarları kullanmanıza imkan tanır.Functions lets you use keys to make it harder to access your HTTP function endpoints during development. Standart bir HTTP tetikleyicisi, böyle bir API anahtarı istekteki 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ı karartmak yardımcı olabilir, ancak bunlar üretimde HTTP tetikleyicisi güvenliğini sağlamak için bir yol olarak amaçlanmamış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 için bkz. üretimde bir HTTP uç noktası güvenli.To learn more, see Secure an HTTP endpoint in production.

Not

İşlevleri 1.x çalışma zamanı içinde Web kancası sağlayıcıları, sağlayıcı neyi desteklediğine bağlı olarak çeşitli şekillerde çeşitli isteklerini 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 bölümünde ele alınmıştır Web kancaları ve anahtarları.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 anahtarlar vardır:There are two types of keys:

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

Her anahtar için başvuru olarak adlandırılır ve işlevi ve ana bilgisayar düzeyinde ("varsayılan" adlı) bir varsayılan anahtar yoktur.Each key is named for reference, and there is a default key (named "default") at the function and host level. İşlev tuşları, ana bilgisayar anahtarlarını önceliklidir.Function keys take precedence over host keys. İki anahtar da aynı ada sahip 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ı, ayrıca özel bir sahip ana anahtarı.Each function app also has a special master key. Bu anahtar adlı bir konak anahtardır _master, çalışma zamanı API'leri yönetimsel erişim sağlar.This key is a host key named _master, which provides administrative access to the runtime APIs. Bu anahtar iptal edilemiyor.This key cannot be revoked. Ayarlarsanız bir yetkilendirme düzeyini admin, istekleri, ana anahtarı; kullanmalıdır herhangi bir tuşa Yetkilendirme hatası oluşur.When you set an authorization level of admin, requests must use the master key; any other key results in authorization failure.

Dikkat

İşlev uygulamanızın ana anahtar ile verilen yükseltilmiş izinler nedeniyle değil üçüncü taraflarla bu anahtarı paylaşan veya yerel istemci uygulamaları dağıtabilirsiniz.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 yetki düzeyi seçerken dikkatli olun.Use caution when choosing the admin authorization level.

Anahtarları almaObtaining keys

Anahtarlar, azure'daki işlev uygulamanızın bir parçası olarak depolanır ve bekleme sırasında şifrelenir.Keys are stored as part of your function app in Azure and are encrypted at rest. Anahtarlarınızı görüntülemek için yeni değerler oluşturmak veya yeni değerler için anahtarları alma, HTTP ile tetiklenen işlevlerde birine gidin Azure portalında seçip Yönet.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 tuşlarını yönetin.

Program aracılığıyla işlev tuşlarını almak için hiçbir desteklenen API yoktur.There is no supported API for programmatically obtaining function keys.

API anahtarı kimlik doğrulamaAPI key authorization

Çoğu HTTP tetikleyici şablonları, istekteki bir API anahtarı gerektirir.Most HTTP trigger templates require an API key in the request. Bu nedenle, HTTP isteği normalde şu 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>

Adlı bir sorgu dizesi değişkeni anahtar eklenebilir code, yukarıdaki gibi.The key can be included in a query string variable named code, as above. Olarak da eklenebilir bir x-functions-key HTTP üstbilgisi.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 tuşu veya herhangi bir ana bilgisayar anahtarı olabilir.The value of the key can be any function key defined for the function, or any host key.

Anahtarları gerektirmeyen anonim isteklere izin verebilirsiniz.You can allow anonymous requests, which do not require keys. Ayrıca ana anahtarı kullanılması gerekebilir.You can also require that the master key be used. Kullanarak varsayılan yetkilendirme düzeyi değiştirme authLevel JSON bağlama bir özellik.You change the default authorization level by using the authLevel property in the binding JSON. Daha fazla bilgi için tetikleyici - yapılandırma.For more information, see Trigger - configuration.

Not

İşlevleri yerel olarak çalışırken, yetkilendirme bakılmaksızın belirtilen kimlik doğrulama düzeyi ayarı devre dışı bırakıldı.When running functions locally, authorization is disabled regardless of the specified authentication level setting. Azure'a yayımlama sonrasında authLevel tetikleyicinize ayarı zorunlu tutulur.After publishing to Azure, the authLevel setting in your trigger is enforced.

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

Tam olarak üretim ortamında işlevi uç noktalarınızı güvenliğini sağlamak için uygulama aşağıdaki işlevi uygulama düzeyinde güvenlik seçeneklerden birini dikkate almanız gerekir:To fully secure your function endpoints in production, you should consider implementing one of the following function app-level security options:

  • App Service kimlik doğrulamasını etkinleştirmek / işlev uygulamanız için yetkilendirme.Turn on App Service Authentication / Authorization for your function app. İstemcilerin kimliğini doğrulamak için Azure Active Directory (AAD) ve çeşitli üçüncü taraf kimlik sağlayıcıları kullanan App Service platformu 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ını uygulamak için bunu kullanabilirsiniz ve işlev kodunuzu kullanıcı bilgileri ile ç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. kimlik doğrulama ve yetkilendirme Azure App Service'te ve istemci kimliklerle çalışma.To learn more, see Authentication and authorization in Azure App Service and Working with client identities.

  • Azure API Management (APIM) isteklerinin kimliğini doğrulamak için kullanın.Use Azure API Management (APIM) to authenticate requests. APIM API'si güvenlik seçenekleri gelen istekler için çeşitli 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. Yerinde APIM ile işlev uygulamanızı APIM Örneğinize IP adresi yalnızca 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 sınırlamaları.To learn more, see IP address restrictions.

  • Bir Azure App Service ortamı (ASE) için işlev uygulamanızı dağıtın.Deploy your function app to an Azure App Service Environment (ASE). ASE işlevlerinizi çalıştırmak için adanmış bir barındırma ortamı sağlar.ASE provides a dedicated hosting environment in which to run your functions. ASE gelen tüm istekleri kimliğini doğrulamak için kullanabileceğiniz tek bir ön uç ağ geçidi yapılandırmanızı sağlar.ASE lets you configure a single front-end gateway that you can use to authenticate all incoming requests. Daha fazla bilgi için App Service ortamı için bir 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üzeyinde güvenlik yöntemlerden birini kullanarak, HTTP ile tetiklenen işlev kimlik doğrulama düzeyini ayarlamalısınız anonymous.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 sürüm için kullanılabilir işlevler çalışma zamanının 1.x.Webhook mode is only available for version 1.x of the Functions runtime. HTTP Tetikleyicileri sürümünde performansını artırmak için bu değişiklik yapılmıştır 2.x.This change was made to improve the performance of HTTP triggers in version 2.x.

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

GitHub Web kancasıGitHub webhooks

GitHub Web kancası için yanıt için ilk işlevinizi ile HTTP tetikleyicisi oluşturma ve ayarlama webHookType özelliğini github.To respond to GitHub webhooks, first create your function with an HTTP Trigger, and set the webHookType property to github. Ardından kendi URL'sini ve API anahtarını kopyalayın Web kancası Ekle GitHub deponuza sayfası.Then copy its URL and API key into the Add webhook page of your GitHub repository.

Slack Web kancalarıSlack webhooks

Slack Web kancası Slack belirteçten ile bir işleve özgü anahtar yapılandırmak için belirtmenize izin verir yerine bir belirteç sizin için oluşturur.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 anahtarlarWebhooks and keys

Web kancası yetkilendirme Web kancası alıcı bileşeni tarafından HTTP tetikleyicisi bir parçası olarak işlenir ve mekanizması Web kancası türüne göre değişir.Webhook authorization is handled by the webhook receiver component, part of the HTTP trigger, and the mechanism varies based on the webhook type. Her mekanizmasının 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 aşağıdaki yollardan biriyle anahtar adı ile istek göndermek için Web kancası sağlayıcı 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ı anahtar adı geçen clientid gibi sorgu dizesi parametresi, https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>.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 üstbilgisi: Sağlayıcı anahtar adı geçen x-functions-clientid başlığı.Request header: The provider passes the key name in the x-functions-clientid header.

Tetikleyici - sınırlarıTrigger - limits

HTTP isteği uzunluğu (104,857,600 bayt) 100 MB ile sınırlıdır ve URL uzunluğu (bayt 4.096) 4 KB 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 tarafından belirtilen httpRuntime çalışma zamanının öğesinin Web.config dosyasını.These limits are specified by the httpRuntime element of the runtime's Web.config file.

Kullanan bir işlev, HTTP tetikleyicisi olmayan tamamlamak yaklaşık 2,5 dakika içinde ağ geçidi zaman aşımına uğrar ve HTTP 502 hata 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 eder, ancak bir HTTP yanıtının geri dönmek mümkün olmayacaktır.The function will continue running but will be unable to return an HTTP response. Uzun süre çalışan işlevler için zaman uyumsuz desenleri izleyin ve burada isteğinin durumu ping atabilirsiniz bir konum döndürür ö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şlev ne kadar çalıştırabilirsiniz hakkında daha fazla bilgi için bkz: tüketim ölçeklendirme ve barındırma - 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 tetikleyici 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ızdır.*The default for version 1.x is unbounded. 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.The default for version 2.x in a dedicated plan is unbounded.
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ızdır.*The default for version 1.x is unbounded. 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.The default for version 2.x in a dedicated plan is unbounded.
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.

ÇıktıOutput

HTTP isteği gönderene yanıt bağlama HTTP çıkış kullanın.Use the HTTP output binding to respond to the HTTP request sender. Bu bağlama, bir HTTP tetikleyicisi gerektirir ve tetikleyicinin istekle ilişkili yanıt özelleştirmenizi sağlar.This binding requires an HTTP trigger and allows you to customize the response associated with the trigger's request. Bir HTTP çıktı bağlaması HTTP tetikleyicisi HTTP 200 OK işlevleri boş bir gövdeye sahip döndürür değil sağlanan ise 1.x veya işlev boş bir gövdeye sahip HTTP 204 Hayır içerik 2.x.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 ayarladığınız bağlama yapılandırma özelliklerini açıklayan function.json dosya.The following table explains the binding configuration properties that you set in the function.json file. C# sınıf kitaplıkları için bunlar için karşılık gelen öznitelik özellikleri yoktur function.json özellikleri.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 İşlev kodu bir yanıt için kullanılan bir değişken adı veya $return dönüş değeri kullanılacak.The variable name used in function code for the response, or $return to use the return value.

Çıkış - kullanımOutput - usage

Bir HTTP yanıt göndermek için dil standardı yanıt desenleri kullanın.To send an HTTP response, use the language-standard response patterns. İşlev dönüş türü, C# veya C# betiği olun IActionResult veya Task<IActionResult>.In C# or C# script, make the function return type IActionResult or Task<IActionResult>. C# ' ta dönen değer özniteliği gerekli değildir.In C#, a return value attribute isn't required.

Örneğin yanıt bkz tetikleyicisi örneğinde.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