Tüm Ürünler
Search
Belge Merkezi

Function Compute:İşlev çağırmak için HTTP tetikleyicisi kullanın

Son Güncelleme:Oct 08, 2026

Bir HTTP tetikleyicisi, işlev URL'si olarak adlandırılan bir HTTP(S) uç noktası aracılığıyla bir işlevi erişime açar. Bir istemci işlev URL'sini çağırdığında Function Compute, HTTP isteğini bir olay nesnesine dönüştürür ve bunu işlev işleyicinize iletir. İşlev yanıt döndürdükten sonra Function Compute, çıktıyı tekrar bir HTTP yanıtına eşler ve istemciye gönderir.

Bu konu, yerleşik çalışma zamanlarında HTTP tetikleyicisinin davranışını ele alır. Özel çalışma zamanları için bkz. Web işlevleri.

Function Compute 3.0'da yerleşik çalışma zamanlarının HTTP tetikleyici davranışı, Function Compute 2.0'dan önemli ölçüde farklıdır. Ayrıntılar için bkz. Nasıl çalışır . Özel çalışma zamanları ve Özel Konteyner çalışma zamanları için davranış Function Compute 2.0 ile aynı kalır.

Nasıl çalışır

image

Bir istemci işlev URL'sini çağırdığında:

  1. Function Compute, HTTP isteğini bir olay nesnesine (event) eşler.

  2. Olay nesnesi işlev işleyicinize iletilir.

  3. İşleviniz yanıt döndürdükten sonra Function Compute, çıktıyı bir HTTP yanıtına eşler ve istemciye geri gönderir.

İstek yapısı

Biçim

Function Compute gelen HTTP isteğini aşağıdaki yapıya sahip bir olay nesnesine eşler:

{
    "version": "v1",
    "rawPath": "/example",
    "body": "Hello FC!",
    "isBase64Encoded": false,
    "headers": {
        "header1": "value1",
        "header2": "value1,value2"
    },
    "queryParameters": {
        "parameter1": "value1",
        "parameter2": "value1,value2"
    },
    "requestContext": {
        "accountId": "123456*********",
        "domainName": "<http-trigger-id>.<region-id>.fcapp.run",
        "domainPrefix": "<http-trigger-id>",
        "http": {
            "method": "GET",
            "path": "/example",
            "protocol": "HTTP/1.1",
            "sourceIp": "11.11.11.**",
            "userAgent": "PostmanRuntime/7.32.3"
        },
        "requestId": "1-64f6cd87-*************",
        "time": "2023-09-05T06:41:11Z",
        "timeEpoch": "1693896071895"
    }
}

Parametreler

Parametre Açıklama Örnek
version Yük biçimi sürümü. Desteklenen tek değer v1 değeridir. v1
rawPath URL kodlamalı istek yolu. https://{url-id}.{region}.fcapp.run/example gibi bir istek URL'si için bu değer /example olur. Kodu çözülmüş yol için bkz. requestContext.http.path. /example
body İstek gövdesi. İkili veriler Base64 ile kodlanır. Hello FC!
isBase64Encoded İstek gövdesinin Base64 ile kodlanıp kodlanmadığını belirtir. Geçerli değerler: true, false. false
headers Anahtar-değer çiftleri olarak istek üst bilgileri. Bir anahtar birden fazla değere sahipse değerler virgülle ayrılır. Function Compute 3.0'da her üst bilgi anahtarının ilk harfi büyük harfe dönüştürülür (normalleştirme). Bkz. Bir işlevi çağırmak için HTTP tetikleyicisi kullandığımda üst bilgi anahtarının ilk harfi neden büyük harf olur? {"Header1": "value1", "Header2": "value1,value2"}
queryParameters JSON nesnesi olarak sorgu parametreleri. https://{url-id}.{region}.fcapp.run/example?key1=value1 gibi bir URL için bu değer {"key1": "value1"} olur. Aynı anahtar için birden fazla değer virgülle ayrılır. {"parameter1": "value1", "parameter2": "value1,value2"}
requestContext İstek kimliği, zaman damgası ve arayan bilgileri dahil olmak üzere ek istek meta verileri. —
requestContext.accountId İşleve sahip olan Alibaba Cloud hesabının kimliği. 123456*********
requestContext.domainName HTTP tetikleyicisinin alan adı. <http-trigger-id>.<region-id>.fcapp.run
requestContext.domainPrefix HTTP tetikleyicisinin alan adı ön eki. <http-trigger-id>
requestContext.http HTTP isteğiyle ilgili ayrıntılı bilgiler. —
requestContext.http.method HTTP yöntemi. Geçerli değerler: GET, POST, PUT, HEAD, OPTIONS, PATCH, DELETE. GET
requestContext.http.path Kodu çözülmüş istek yolu. https://{url-id}.{region}.fcapp.run/example?name=Jane gibi bir istek URL'si için bu değer /example olur. /example
requestContext.http.protocol İstek protokolü. HTTP/1.1
requestContext.http.sourceIp Doğrudan TCP bağlantısının eş IP'si (RemoteAddr). Aşağıdaki notu inceleyin. 11.11.XX.XX
requestContext.http.userAgent user-agent istek üst bilgisinin değeri. PostmanRuntime/7.32.3
requestContext.requestId Çağrı günlüklerinin izlenmesi için istek kimliği. 1-64f6cd87-*************
requestContext.time ISO 8601 biçimindeki istek zaman damgası. 2023-09-05T06:41:11Z
requestContext.timeEpoch UNIX zamanındaki (milisaniye cinsinden) istek zaman damgası. 1693896071895
Uyarı

sourceIp doğrudan TCP bağlantısının eş IP'sidir ve mutlaka orijinal istemci IP'si değildir. İstek bir proxy tarafından yönlendirilmezse sourceIp istemcinin IP'sidir. İstek bir veya daha fazla proxy üzerinden geçerse sourceIp son proxy'nin IP'sidir. İstekler proxy'lerden geçtiğinde orijinal istemci IP'sini almak için X-Forwarded-For üst bilgisini okuyun. Ayrıntılar için bkz. HTTP tetikleyicisi yerleşik bir çalışma zamanı kullanan bir işlevi çağırdığında istemcinin orijinal IP adresini nasıl elde ederim?

Eşleme mantığı

Function Compute HTTP isteğini olay nesnesine şu şekilde eşler:

  • HTTP istek üst bilgileri → event.headers

  • HTTP sorgu parametreleri → event.queryParameters

  • İstek bağlamı (istek kimliği, zaman damgası, arayan kimliği) → event.requestContext

  • POST istek gövdesi → event.body

Base64 kodlama

Function Compute, istek gövdesinin Base64 ile kodlanıp kodlanmayacağını belirlemek için Content-Type üst bilgisini denetler.

**Content-Type** **isBase64Encoded** Gövde işleme
text/* false Olduğu gibi iletilir
application/json false Olduğu gibi iletilir
application/ld+json false Olduğu gibi iletilir
application/xhtml+xml false Olduğu gibi iletilir
application/xml false Olduğu gibi iletilir
application/atom+xml false Olduğu gibi iletilir
application/javascript false Olduğu gibi iletilir
Diğer tüm değerler true İşleve iletilmeden önce Base64 ile kodlanır

İstek eşleme örnekleri

GET

HTTP isteği Olay nesnesi
GET /?parameter1=value1&parameter2=value2 HTTP/1.1 {"version":"v1","rawPath":"/","headers":{"Accept":"*/*","User-Agent":"CurlHttpClient"},"queryParameters":{"parameter1":"value1","parameter2":"value2"},"body":"","isBase64Encoded":true,"requestContext":{"accountId":"1327**********","domainName":"example.cn-hangzhou.fcapp.run","domainPrefix":"example","requestId":"1-67aee50c-****-**********","time":"2025-02-14T06:39:08Z","timeEpoch":"1739515148145","http":{"method":"GET","path":"/","protocol":"HTTP/1.1","sourceIp":"40.XX.XX.XX","userAgent":"CurlHttpClient"}}}

Bu isteği CLI'dan göndermek için https://example.cn-hangzhou.fcapp.run adresini işlev URL'nizle değiştirin:

curl -v "https://example.cn-hangzhou.fcapp.run?parameter1=value1&parameter2=value2"

POST

HTTP isteği Olay nesnesi
POST / HTTP/1.1
Content-Type: application/json
{"version":"v1","rawPath":"/","headers":{"Accept":"*/*","Content-Length":"20","Content-Type":"application/json","User-Agent":"curl/8.7.1"},"queryParameters":{},"body":"{\"message\": \"Hello\"}","isBase64Encoded":false,"requestContext":{"accountId":"1327**********","domainName":"example.cn-hangzhou.fcapp.run","domainPrefix":"example","requestId":"1-67aee50c-****-**********","time":"2025-02-14T06:39:08Z","timeEpoch":"1739515148145","http":{"method":"POST","path":"/","protocol":"HTTP/1.1","sourceIp":"40.XX.XX.XX","userAgent":"CurlHttpClient"}}}

Bu isteği CLI'dan göndermek için https://example.cn-hangzhou.fcapp.run adresini işlev URL'nizle değiştirin:

curl -v -H "Content-Type: application/json" -d '{"message": "Hello"}' "https://example.cn-hangzhou.fcapp.run"
İstek gövdesinin Base64 ile kodlanmasını zorlamak için Content-Type değerini application/x-www-form-urlencoded olarak ayarlayın.

Yanıt yapısı

Biçim

İşlev çıkışınız HTTP yanıtına eşlenmeden önce bir yanıt yapısına ayrıştırılır:

{
    "statusCode": 200,
    "headers": {
        "Content-Type": "application/json",
        "Custom-Header-1": "Custom Value"
    },
    "isBase64Encoded": false,
    "body": "{\"message\":\"Hello FC!\"}"
}

Eşleme mantığı

Function Compute, işlev çıkışınızı statusCode alanı içeren geçerli bir JSON olup olmamasına göre HTTP yanıtına eşler.

**Çıkış, statusCode içeren geçerli bir JSON olduğunda:**

Yanıt yapısı alanı HTTP yanıtı
statusCode Durum kodu
headers["Content-Type"] Content-Type üst bilgisi (yoksa varsayılan olarak application/json olur)
body Yanıt gövdesi
isBase64Encoded Gövdenin gönderilmeden önce Base64 ile kodunun çözülüp çözülmeyeceği (yoksa varsayılan olarak false olur)

**Çıkış, statusCode içermeyen geçerli bir JSON olduğunda veya JSON olmadığında:**

Function Compute aşağıdaki varsayılanları kullanır:

Alan Varsayılan değer
statusCode 200
Content-Type application/json
body İşlev çıkışı olduğu gibi
isBase64Encoded false

Yanıt eşleme örnekleri

Aşağıdaki örneklerde işlev çıkışının ayrıştırmadan geçerek nihai HTTP yanıtına nasıl dönüştürüldüğü gösterilmektedir.

Dize yanıtı için çıkış

İşlev çıkışı Ayrıştırılmış yanıt yapısı HTTP yanıtı (istemci alır)
Hello World! {"statusCode":200,"body":"Hello World!","headers":{"content-type":"application/json"},"isBase64Encoded":false}
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Length: 12
Content-Type: application/json
X-Fc-Request-Id: 1-64f6d6e7-e01edb1cce58240ed59b59d9

Hello World!

JSON yanıtı için çıkış

İşlev çıkışı Ayrıştırılmış yanıt yapısı HTTP yanıtı (istemci alır)
{"message": "Hello World!"} {"statusCode":200,"body":"{\"message\": \"Hello World!\"}","headers":{"content-type":"application/json"},"isBase64Encoded":false}
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Length: 27
Content-Type: application/json
X-Fc-Request-Id: 1-64f6d867-7302fc1ac6338b6fd2adb782

{"message": "Hello World!"}

Özel yanıt için çıkış

İşlev çıkışı Ayrıştırılmış yanıt yapısı HTTP yanıtı (istemci alır)
{"statusCode":201,"headers":{"Content-Type":"application/json","My-Custom-Header":"Custom Value"},"body":{"message":"Hello, world!"},"isBase64Encoded":false} {"statusCode":201,"headers":{"Content-Type":"application/json","My-Custom-Header":"Custom Value"},"body":{"message":"Hello, world!"},"isBase64Encoded":false}
HTTP/1.1 201 OK
Content-Type: application/json
My-Custom-Header: Custom Value
X-Fc-Request-Id: 1-64f6dcb3-e787580749d3ba13b047ce14

{"message": "Hello world!"}

Base64 kod çözme

İşleviniz isBase64Encoded değeri true olarak ayarlanmış geçerli bir JSON döndürürse Function Compute, body değerini HTTP yanıt gövdesine eşlemeden önce Base64 ile kodunu çözer. Kod çözme işlemi başarısız olursa Function Compute bir hata bildirmeden body değerini doğrudan döndürür.

Yanıt üst bilgileri

Function Compute, her yanıta otomatik olarak X-Fc-Request-Id üst bilgisini ekler. Bu üst bilgi isteği benzersiz şekilde tanımlar ve günlüklerin izlenmesi ile hataların teşhis edilmesi için kullanışlıdır. X-Fc-Request-Id dışında Function Compute varsayılan olarak başka herhangi bir yanıt üst bilgisi eklemez.

Uyarı

X-Fc- ön ekine sahip özel üst bilgiler desteklenmez. Aşağıdaki üst bilgiler Function Compute tarafından ayrılmıştır ve işleviniz tarafından döndürülürse yoksayılır:

  • connection

  • content-length

  • date

  • keep-alive

  • server

  • content-disposition

Hata işleme

HTTP tetikleyicisi çağrıları ile doğrudan API çağrıları işlev hatalarını farklı şekilde işler.

Çağrı türü Hata davranışı HTTP durum kodu
Doğrudan API çağrısı Yanıt gövdesinde hata mesajı döndürülür 200
HTTP tetikleyicisi (işlev URL'si) Hata mesajı gizlenir; Internal Server Error döndürülür 502

Örneğin, bir Python ModuleNotFoundError hatasıyla karşılaşan doğrudan bir API çağrısı aşağıdaki hata ayrıntılarını döndürür:

{
    "errorMessage": "Unable to import module 'index'",
    "errorType": "ImportModuleError",
    "stackTrace": [
        "ModuleNotFoundError: No module named 'not_exist_module'"
    ]
}

HTTP tetikleyicisi aracılığıyla çağrılan bir işlev bir hatayla karşılaştığında istemci şu şekilde bir yanıt alır:

HTTP/1.1 502 Bad Gateway
Content-Disposition: attachment
Content-Type: application/json
X-Fc-Request-Id: 1-64f6df91-fe144d52e4fd27afe3d8dd6f
Content-Length: 21

Internal Server Error

İşlevinizin çağrı günlüklerinde tam hata ayrıntılarını aramak için X-Fc-Request-Id değerini kullanın.

İlgili konular

Yerleşik bir çalışma zamanı için işlev kodu yazıyorsanız dilinize ilişkin işleyici belgelerine bakın: