全部产品
Search
文档中心

Function Compute:HTTP handler

更新时间:Jul 02, 2025

Gunakan HTTP handler untuk memproses permintaan HTTP secara efisien. Saat sebuah fungsi dipanggil, Function Compute menggunakan handler yang Anda tentukan untuk menangani permintaan HTTP. Bagian ini menjelaskan struktur HTTP handler dalam lingkungan runtime Node.js dan memberikan contoh penggunaannya.

HTTP handler signature

Berikut adalah contoh kode yang menunjukkan tanda tangan HTTP handler dalam lingkungan runtime Node.js. Anda hanya perlu mengimplementasikan satu fungsi untuk merespons permintaan HTTP.

exports.handler = (req, resp, context) => {
    console.log("receive body: ", req.body.toString());
    resp.setHeader("Content-Type", "text/plain");
    resp.send('<h1>Hello, world!</h1>');
}     

Deskripsi

  • handler: Nama HTTP handler.

  • req: Struktur permintaan HTTP.

  • resp: Struktur respons HTTP.

  • context: Informasi konteks. Untuk detail lebih lanjut, lihat Context.

HTTP request struct

Bidang

Tipe

Deskripsi

headers

Object

Menyimpan pasangan kunci-nilai yang dikirim oleh klien HTTP.

path

String

Menentukan jalur HTTP.

queries

Object

Menyimpan pasangan kunci-nilai dari parameter query di jalur HTTP. Nilai parameter bisa berupa string atau array.

method

String

Menentukan metode HTTP.

clientIP

String

Menentukan alamat IP klien.

url

String

Menentukan URL dari permintaan.

Catatan

key dalam header yang mencakup salah satu bidang berikut atau dimulai dengan x-fc- akan diabaikan. Oleh karena itu, Anda tidak dapat menyesuaikan kunci tersebut.

  • connection

  • keep-alive

HTTP response struct

Metode

Tipe

Deskripsi

response.setStatusCode(statusCode)

integer

Menetapkan kode status.

response.setHeader(headerKey, headerValue)

String, String

Menetapkan header respons.

response.deleteHeader(headerKey)

String

Menghapus header respons.

response.send(body)

Buffer, String, dan Stream.Readable

Mengirimkan badan respons.

Penting

headerKey yang mencakup salah satu bidang berikut atau dimulai dengan x-fc- akan diabaikan. Oleh karena itu, Anda tidak dapat menyesuaikan kunci header tersebut.

  • connection

  • content-length

  • date

  • keep-alive

  • server

  • upgrade

Batasan

  • Batasan Permintaan

    Jika permintaan melebihi salah satu batasan berikut, sistem akan mengembalikan kode status 400 dan kesalahan InvalidArgument.

    Bidang

    Deskripsi

    Kode status HTTP

    Kode kesalahan

    headers

    Total ukuran kunci dan nilai dalam header permintaan tidak boleh melebihi 8 KB.

    400

    InvalidArgument

    path

    Total ukuran jalur permintaan dan parameter query tidak boleh melebihi 4 KB.

    body

    Total ukuran body dari permintaan pemanggilan sinkron tidak boleh melebihi 32 MB. Total ukuran body dari permintaan pemanggilan asinkron tidak boleh melebihi 128 KB.

  • Batasan Respons

    Jika respons melebihi salah satu batasan berikut, sistem akan mengembalikan kode status 502 dan kesalahan BadResponse.

    Bidang

    Deskripsi

    Kode status HTTP

    Kode kesalahan

    headers

    Total ukuran kunci dan nilai dalam header respons tidak boleh melebihi 8 KB.

    502

    BadResponse

Contoh: Memperoleh detail permintaan HTTP dan mengembalikan body

Sample code

module.exports.handler = function (request, response, context) {
    // mendapatkan request header
    var reqHeader = request.headers
    var headerStr = ' '
    for (var key in reqHeader) {
        headerStr += key + ':' + reqHeader[key] + '  '
    };

    // mendapatkan info permintaan
    var url = request.url
    var path = request.path
    var queries = request.queries
    var queryStr = ''
    for (var param in queries) {
        queryStr += param + "=" + queries[param] + '  '
    };
    var method = request.method
    var clientIP = request.clientIP
    var body = request.body
    var respBody = new Buffer('requestHeader:' + headerStr + '\n' + 'url: ' + url + '\n' + 'path: ' + path + '\n' + 'queries: ' + queryStr + '\n' + 'method: ' + method + '\n' + 'clientIP: ' + clientIP + '\n' + 'body: ' + body + '\n')
    response.setStatusCode(200)
    response.setHeader('content-type', 'application/json')
    response.send(respBody)
};

Before you start

Buat layanan.

Procedure

  1. Masuk ke Konsol Function Compute. Di panel navigasi sisi kiri, klik Services & Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.

  3. Pada halaman Functions, klik Create Function.

    Buat fungsi HTTP dengan lingkungan runtime Node.js 14.x. Untuk informasi lebih lanjut, lihat Buat fungsi.

  4. Di halaman detail fungsi, klik tab Code, masukkan kode sampel sebelumnya ke dalam editor kode, lalu klik Deploy.

    Catatan

    Dalam kode contoh sebelumnya, handler dari fungsi adalah metode handler di index.js. Jika Anda menentukan handler yang berbeda, gunakan file dan metode aktual. Untuk informasi lebih lanjut, lihat Lifecycle hooks for function instances.

  5. Pada tab Code, klik ikon down di sebelah Test Function dan pilih Configure Test Parameters dari daftar drop-down.

  6. Di panel Configure Test Parameters, klik Create New Test Event atau Modify Existing Test Event, atur parameter berikut, lalu klik OK.

    • Request Name: Masukkan nama permintaan kustom.

    • Request Method: Pilih POST.

    • Request Path: Masukkan ?foo=bar.

    • Request Body: Masukkan hello,fc di editor kode.

  7. Klik Test Function.

    Setelah fungsi dieksekusi, informasi seperti alamat IP klien terdapat dalam hasil yang dikembalikan.