請求處理程序(Handler)
更新時間(jian) 2024-12-10 12:13:57
最近更新時間: 2024-12-10 12:13:57
分享文(wen)章
本文介紹如何使用Node.js請求處理程序響應接(jie)收到的(de)事件(jian)并執行相應的(de)業務邏輯(ji)。
請求處理程序
請求處理程序是您提供的一個方法。當您的函數被調用時,函數計算會運(yun)行該方法處理請(qing)求(qiu)。
您可以通過函數計算控制臺頁面配置請求處理程序,對于Node.js語言的函數,請求處理程序需配置為 [文件名].[方法名]。例如,您的文件名為index.js或index.mjs,方法名為handler,則請求處理程序可配置為 index.handler。
ES模塊和CommonJS模塊的事件請求處理程(cheng)序(xu)的方法簽名(ming)分別定義如下(xia):
ES模塊
// index.mjs
export const handler = async (event, context) => {
console.log("receive event: \n" + event);
return "Hello World!";
};
CommonJS模塊
// index.js
exports.handler = async function(event, context) {
console.log("receive event: \n" + event);
return "Hello World!";
};
- 方法名
您可以自定義方法名稱,或與函數計算控制臺配置的請求處理程序相對應。如:handler。 - event入參
您調用函數時傳入的參數。 - context入參
context參數中包含一些函數的運行時信息。
示例:JSON格式參數解析
如下(xia)示例中,我們解析函(han)數調用入參event為(wei)JSON,然后獲取userName字段的值(zhi):
ES模塊
export const handler = async (event, context) => {
var eventObj = JSON.parse(event.toString());
return eventObj['key'];
};
CommonJS模塊
exports.handler = function(event, context, callback) {
var eventObj = JSON.parse(event.toString());
callback(null, eventObj['key']);
};
示例:HTTP觸發器 - 調用函數
如下示例中,我們處理傳入(ru)的事件,如果是(shi)HTTP請求(qiu),則讀(du)取并(bing)解碼請求(qiu)體,然后原樣返回給調(diao)用者:
ES模塊
'use strict';
export const handler = async (event, context) => {
const eventObj = JSON.parse(event);
console.log(`receive event: ${JSON.stringify(eventObj)}`);
let body = 'Hello World!';
// get http request body
if ("body" in eventObj) {
body = eventObj.body;
if (eventObj.isBase64Encoded) {
body = Buffer.from(body, 'base64').toString('utf-8');
}
}
console.log(`receive http body: ${body}`);
return {
'statusCode': 200,
'body': body
};
}
CommonJS模塊
'use strict';
exports.handler = (event, context, callback) => {
const eventObj = JSON.parse(event);
console.log(`receive event: ${JSON.stringify(eventObj)}`);
let body = 'Hello World!';
// get http request body
if ("body" in eventObj) {
body = eventObj.body;
if (eventObj.isBase64Encoded) {
body = Buffer.from(body, 'base64').toString('utf-8');
}
}
console.log(`receive http body: ${body}`);
callback(null, {
'statusCode': 200,
'body': body
});
}