すべてのプロダクト
Search
ドキュメントセンター

Function Compute:HTTPハンドラー

最終更新日:Aug 30, 2024

HTTPハンドラーを使用して、HTTPリクエストを効率的に処理できます。 関数が呼び出されると、function Computeは指定したハンドラーを使用してHTTPリクエストを処理します。 このトピックでは、Node.jsランタイム環境でのHTTPハンドラーの構造について説明し、Node.jsランタイム環境でのHTTPハンドラーの使用方法の例を示します。

HTTPハンドラー署名

次のサンプルコードは、Node.jsランタイム環境でのHTTPハンドラーの署名の例を示しています。 HTTPリクエストに応答する関数は1つだけ実装する必要があります。

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

説明

  • handler: HTTPハンドラーの名前。

  • req: HTTPリクエスト構造体。

  • resp: HTTPレスポンス構造体。

  • context: コンテキスト情報。 詳細は、「コンテキスト」をご参照ください。

HTTPリクエスト構造体

項目

データ型

説明

headers

オブジェクト

HTTPクライアントによって送信されるキーと値のペアを格納します。

パス

String

HTTPパスを指定します。

queries

オブジェクト

クエリパラメーターのキーと値のペアをHTTPパスに格納します。 パラメーター値は、文字列または配列です。

method

String

HTTPメソッドを指定します。

clientIP

String

クライアントのIPアドレスを指定します。

url

String

リクエストのURLを指定します。

説明

次のいずれかのフィールドを含む、またはx-fc- で始まるヘッダーのキーは無視されます。 したがって、キーをカスタマイズすることはできません。

  • 接続数

  • keep-alive

HTTPレスポンス構造体

移動方法

データ型

説明

response.setStatusCode(statusCode)

interger

ステータスコードを設定します。

response.setHeader(headerKey, headerValue)

String, String

レスポンスヘッダーを設定します。

response.de leteHeader(headerKey)

String

レスポンスヘッダーを削除します。

response.send(body)

Buffer、String、およびStream.Readable

レスポンス本文を送信します。

重要

次のいずれかのフィールドを含む、またはx-fc- で始まるheaderKeyは無視されます。 したがって、ヘッダーキーをカスタマイズすることはできません。

  • 接続数

  • content-length

  • date

  • keep-alive

  • サーバー

  • アップグレード

制限事項

  • リクエスト制限

    リクエストが次のいずれかの制限を超えると、システムはステータスコード400とエラーInvalidArgumentを返します。

    項目

    説明

    HTTPステータスコード

    エラーコード

    headers

    リクエストヘッダーのキーと値の合計サイズは8 KBを超えることはできません。

    400

    InvalidArgument

    パス

    リクエストパスとクエリパラメーターの合計サイズは4 KBを超えることはできません。

    body

    同期呼び出し要求の本体の合計サイズは32 MBを超えることはできません。 非同期呼び出し要求の本体の合計サイズは128 KBを超えることはできません。

  • レスポンスの制限

    応答が次のいずれかの制限を超えると、システムはステータスコード502とエラーBadResponseを返します。

    項目

    説明

    HTTPステータスコード

    エラーコード

    headers

    レスポンスヘッダーのキーと値の合計サイズは8 KBを超えることはできません。

    502

    BadResponse

例: HTTPリクエストの詳細を取得し、本文を返します。

サンプルコード

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

    // get request info
    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)
};

あなたが始める前に

サービスの作成

手順

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。

  3. [関数] ページで、[関数の作成] をクリックします。

    ランタイム環境がNode.js 14.xのHTTP関数を作成します。 詳細については、「関数の作成」をご参照ください。

  4. 関数の詳細ページで、コードタブで、コードエディターに上記のサンプルコードを入力し、デプロイ をクリックします。

    説明

    上記のサンプルコードでは、関数のハンドラーはindex.jshandlerメソッドです。 別のハンドラーを指定する場合は、実際のファイルとメソッドを使用します。 詳細については、「関数インスタンスのライフサイクルフック」をご参照ください。

  5. コードタブをクリックし、down隣のアイコンテスト機能を選択し、ドロップダウンリストからテストパラメーターの設定 を選択します。

  6. テストパラメーターの設定パネルで、クリック新しいテストイベントの作成または既存のテストイベントの変更次のパラメーターを設定し、OK をクリックします。

    • リクエスト名: カスタムリクエスト名を入力します。

    • リクエスト方法: POSTを選択します。

    • リクエストパス: Enter? foo=バー.

    • リクエスト本文: コードエディターにhello,fcと入力します。

  7. テスト機能 をクリックします。

    関数の実行後、クライアントのIPアドレスなどの情報が返された結果に含まれます。