HTTP handler memungkinkan Anda menjalankan aplikasi web HTTP yang sudah ada di Function Compute tanpa perlu menulis ulang. Function Compute hanya mendukung HTTP handler untuk fungsi custom container dengan CAPort yang telah dikonfigurasi.
Cara kerja
Saat permintaan tiba, Function Compute meneruskannya ke server HTTP yang berjalan di dalam kontainer Anda. Permintaan yang diteruskan mempertahankan semua atribut aslinya: metode, path, parameter kueri, header permintaan, badan permintaan, dan header umum yang dihasilkan oleh Function Compute.
Server HTTP di dalam kontainer Anda memproses permintaan tersebut dan mengembalikan respons. Function Compute kemudian meneruskan respons tersebut ke pemanggil.
Memanggil HTTP handler
Kirim permintaan ke HTTP handler dengan cara yang sama seperti memanggil API web apa pun—menggunakan cURL, Postman, atau browser.
Saat mengakses pemicu HTTP dari browser, respons mungkin diunduh sebagai file alih-alih ditampilkan. Untuk detailnya, lihat Mengapa saya perlu mengunduh respons saat mengakses fungsi dengan HTTP trigger melalui browser web?
Contoh Node.js Express berikut mengarahkan permintaan GET dan POST ke handler terpisah. Petakan path apa pun ke handler yang Anda butuhkan.
'use strict';
const express = require('express');
// Konstanta
const PORT = 9000;
const HOST = '0.0.0.0';
const app = express();
// Parsing badan permintaan sebagai JSON
app.use(express.json());
app.get('/*', (req, res) => {
console.log(req.body);
res.send('Hello FunctionCompute, http GET');
});
app.post('/*', (req, res) => {
console.log(req.body);
res.send('Hello FunctionCompute, http POST');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);Untuk contoh tambahan dalam runtime lainnya, lihat Contoh.
Header permintaan dan respons
Header permintaan khusus
Function Compute menambahkan header berikut ke permintaan yang diteruskan ke kontainer Anda.
| Header | Wajib | Deskripsi |
|---|---|---|
x-fc-base-path | Opsional | Path dasar yang ditambahkan di awal path permintaan. Jika tidak ada nama domain kustom yang dikonfigurasi, nilainya adalah /2016-08-15/proxy/${servicename}/${functionname}/. |
x-fc-status | Opsional | Berlaku untuk fungsi HTTP yang dibuat dengan memanggil operasi API web yang belum dimigrasikan ke Function Compute. Sertakan field ini dalam header respons untuk melaporkan status pemanggilan kembali ke Function Compute. |
Dampak x-fc-status terhadap observabilitas:
x-fc-status dalam respons | Perilaku |
|---|---|
| Tidak disetel | Function Compute menganggap pemanggilan berhasil. Kesalahan selama eksekusi fungsi tidak dilaporkan ke Function Compute — logika bisnis tidak terpengaruh, tetapi observabilitas FC terganggu. ![]() |
| Disetel | Kegagalan pemanggilan fungsi dilaporkan ke Function Compute melalui x-fc-status. Informasi stack error dicatat dalam log. ![]() |
Atur kedua StatusCode dan x-fc-status dalam respons HTTP Anda untuk mempertahankan observabilitas penuh.
Header yang dibatasi
Header berikut tidak dapat digunakan dalam permintaan atau respons.
Permintaan — header berikut tidak didukung sebagai field kustom:
Field apa pun yang diawali dengan
x-fc-connectionkeep-alive
Respons — header berikut tidak didukung sebagai field kustom:
Field apa pun yang diawali dengan
x-fc-connectioncontent-lengthdatekeep-aliveservercontent-disposition:attachment
Saat menggunakan domain default Function Compute (aliyuncs.com), server secara otomatis menambahkancontent-disposition: attachmentke semua respons, sehingga browser mengunduhnya sebagai file. Untuk menghapus pembatasan ini, konfigurasikan nama domain kustom.
Batasan
Batasan HTTP trigger
Setiap versi atau alias fungsi HTTP hanya mendukung satu HTTP trigger. Untuk detailnya, lihat Mengelola versi dan Mengelola alias.
Batasan ukuran permintaan dan respons
| Kategori | Batasan | Nilai | Kesalahan Saat Melebihi Batas |
|---|---|---|---|
| Permintaan | Ukuran header (semua kunci + nilai) | 8 KB | 400 InvalidArgument |
| Permintaan | Ukuran path (termasuk semua parameter kueri) | 4 KB | 400 InvalidArgument |
| Permintaan | Ukuran badan — pemanggilan sinkron | 32 MB | 400 InvalidArgument |
| Permintaan | Ukuran badan — pemanggilan asinkron | 128 KB | 400 InvalidArgument |
| Respons | Ukuran header (semua kunci + nilai) | 8 KB | 502 BadResponse |
Nama domain kustom dan API Gateway
Ikatkan nama domain kustom ke fungsi HTTP Anda untuk memetakan path URL berbeda ke fungsi yang berbeda. Lihat Mengonfigurasi nama domain kustom.
Sebagai alternatif, gunakan API Gateway dengan jenis layanan backend diatur ke HTTP dan path fungsi HTTP sebagai alamat layanan backend. Lihat Menggunakan Function Compute sebagai layanan backend suatu operasi API.

