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. |
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. |
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
Procedure
Masuk ke Konsol Function Compute. Di panel navigasi sisi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
Pada halaman Functions, klik Create Function.
Buat fungsi HTTP dengan lingkungan runtime Node.js 14.x. Untuk informasi lebih lanjut, lihat Buat fungsi.
Di halaman detail fungsi, klik tab Code, masukkan kode sampel sebelumnya ke dalam editor kode, lalu klik Deploy.
CatatanDalam kode contoh sebelumnya, handler dari fungsi adalah metode
handlerdiindex.js. Jika Anda menentukan handler yang berbeda, gunakan file dan metode aktual. Untuk informasi lebih lanjut, lihat Lifecycle hooks for function instances.Pada tab Code, klik ikon
di sebelah Test Function dan pilih Configure Test Parameters dari daftar drop-down.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.
Klik Test Function.
Setelah fungsi dieksekusi, informasi seperti alamat IP klien terdapat dalam hasil yang dikembalikan.