HTTP請求處理常式僅支援配置了CAPort連接埠的Custom Container函數。本文介紹Custom Container中HTTP請求處理常式的結構特點、調用說明、使用限制、使用樣本和常見問題。
背景資訊
Function Compute會將使用者的請求,包括Method、Path、Body、Query和Headers以及Function Compute系統產生的Common Header,轉寄給HTTP Server。您可以平滑遷移已有的HTTP Web應用。更多資訊,請參見Custom Runtime的HTTP函數。
函數調用說明
當HTTP請求處理常式被調用時,和調用一個Web API方式一樣,您可以直接使用cURL、Postman或瀏覽器等方式直接請求調用。如果您是通過瀏覽器訪問HTTP觸發器的,對應的函數被強制下載時,請參見解決方案。
Header | 描述 |
(可選)x-fc-base-path | 當您尚未配置自訂網域名時,x-fc-base-path的值是 |
(可選)x-fc-status | 當您的HTTP函數不是應用一鍵遷移,而是單純新開發的Web API時,其性質和事件函數類似。 通過Headers中的 x-fc-status 響應,向Function Compute彙報本地函數是否執行成功。
說明 在返回的HTTP響應中,建議您同時設定 StatusCode 和x-fc-status 。 |
使用限制
HTTP Request限制
Request Headers不支援以x-fc-開頭的自訂欄位和以下自訂欄位:
connection
keep-alive
如果Request超過以下限制,會返回
400
狀態代碼和InvalidArgument
錯誤碼。Headers大小:Headers中的所有Key和Value的總大小不得超過8 KB。
Path大小:包括所有的Query Params,Path的總大小不得超過4 KB。
Body大小:同步調用請求的Body的總大小不得超過32 MB,非同步呼叫請求的Body的總大小不得超過128 KB。
HTTP Response限制
Response Headers不支援以x-fc-開頭的自訂欄位和以下自訂欄位:
connection
content-length
date
keep-alive
server
content-disposition:attachment
說明從安全形度考慮,使用Function Compute預設的aliyuncs.com網域名稱,服務端會在Response Headers中強制添加content-disposition: attachment欄位,此欄位會使得返回結果在瀏覽器中以附件的方式下載。如果需要解除該限制,需設定自訂網域名。更多資訊,請參見配置自訂網域名。
如果Response超過以下限制,會返回
502
狀態代碼和BadResponse
錯誤碼。Headers大小:Headers中的所有Key和Value的總大小不得超過8 KB。
其他使用說明
您可以通過綁定自訂網域名,為HTTP函數映射不同的HTTP訪問路徑。詳細資料,請參見配置自訂網域名。您還可以使用API Gateway,後端服務類型選擇HTTP服務,設定HTTP函數為後端服務地址,實作類別似功能。詳細資料,請參見使用Function Compute作為API後端服務。
程式碼範例
在以下Node.js Express樣本中,GET和POST方法分別路由至不同的Handler。您也可以根據需要做任意的Path和Handler映射。
'use strict';
const express = require('express');
// Constants
const PORT = 9000;
const HOST = '0.0.0.0';
// HTTP function get
const app = express();
// Parse request body as 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}`);
多語言使用樣本
使用Serverless Devs工具,您可以將您的應用一鍵遷移至Function Compute。以下樣本展示如何通過Serverless Devs工具快速部署和調用函數,您可以按需修改範例程式碼,實現二次開發。