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

Function Compute:HTTPハンドラー

最終更新日:Sep 30, 2024

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

HTTPハンドラーの署名

次のサンプルコードでは、PHP HTTPハンドラーの署名について説明します。 HTTPリクエストに応答する関数は1つだけ実装する必要があります。

<?php
use RingCentral\Psr7\Response;

function handler($request, $context): Response{
    /*
    $body       = $request->getBody()->getContents();
    $queries    = $request->getQueryParams();
    $method     = $request->getMethod();
    $headers    = $request->getHeaders();
    $path       = $request->getAttribute("path");
    $requestURI = $request->getAttribute("requestURI");
    $clientIP   = $request->getAttribute("clientIP");
    */
    return new Response(
        200,
        array(
            'custom_header1' => 'v1',
            'custom_header2' => ['v2', 'v3'],
            'Content-Type' => 'text/plain',
        ),
        'hello world'
    );
}    

次の項目は、サンプルコードのフィールドを示しています。

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

  • $request: HTTPリクエスト構造。

  • Response: HTTPレスポンス構造。

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

HTTPリクエスト構造

$requestパラメーターは、HTTPメッセージインターフェイスのPHP Standards Recommendation (PSR) 標準に従います。 HTTPメッセージインターフェイスの詳細については、「PSR-7-http-message」をご参照ください。 コーディング標準の詳細については、「PSR HTTPメッセージ」をご参照ください。

次のサンプルコードは、$requestパラメーターによって伝達される情報を示しています。

<?php
    $queries = $request->getQueryParams();
    $method = $request->getMethod();
    $headers = $request->getHeaders();
    $path = $request->getAttribute("path");
    $requestURI = $request->getAttribute("requestURI");
    $clientIP = $request->getAttribute("clientIP");
    $body = $request->getBody()->getContents();

項目

データ型

説明

$ヘッダー

配列

HTTPクライアントによって送信されるキーと値のペア。 値は配列であり、PSR-7の標準に従います。

$パス

String

HTTP URLのパス。

$クエリ

配列

HTTP URLのクエリパラメーターのキーと値のペア。 値は文字列または配列にすることができます。

$メソッド

String

HTTPメソッド。

$clientIP

String

HTTPクライアントのIPアドレス。

$requestURI

String

ホスト名を除くURL。

$body

String

HTTPリクエストの本文。

説明

キーと値のペアのkeyパラメーターは、次のいずれかのフィールドが含まれている場合、またはx-fc- で始まる場合は無視されます。 したがって、キーパラメーターをカスタマイズすることはできません。

  • 接続数

  • keep-alive

HTTPレスポンス構造

$requestパラメーターは、HTTPメッセージインターフェイスのPSR標準に従います。 次のコードは、HTTPレスポンスの構造コンストラクターを示しています。

<?php
/**
     * @param int    $status  Status code for the response, if any.
     * @param array  $headers Headers for the response, if any.
     * @param mixed  $body    Stream body.
     */
    public function __construct(
        $status = 200,
        array $headers = array(),
        $body = null,
    )
    {
       //...
    }
説明

$bodyフィールドには、文字列またはストリームを指定できます。 ストリームタイプのボディを使用する場合は、PSR-7-http-message標準でStreamInterface APIを実装する必要があります。

例:

次のサンプルコードは、HTTP関数で $request$Responseを使用する方法の例を示しています。

<?php
use RingCentral\Psr7\Response;
function handler($request, $context): Response{
    $body = $request->getBody()->getContents();
    $queries = $request->getQueryParams();
    $method = $request->getMethod();
    $headers = $request->getHeaders();
    $path = $request->getAttribute("path");
    $requestURI = $request->getAttribute("requestURI");
    $clientIP = $request->getAttribute("clientIP");

    $params = array(
        'method' => $method,
        'clientIP' => $clientIP,
        'requestURI' => $requestURI,
        'path' => $path,
        'queriesMap' => $queries,
        'headersMap' => $headers,
        'body' => $body,
    );

    $respHeaders = array('Content-Type' => 'application/json');
    $respBody = json_encode($params);
    return new Response(200, $respHeaders, $respBody);
}  

制限事項

  • リクエスト制限

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

    項目

    説明

    HTTPステータスコード

    エラーコード

    headers

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

    400

    InvalidArgument

    パス

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

    body

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

  • レスポンスの制限

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

    項目

    説明

    HTTPステータスコード

    エラーコード

    headers

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

    502

    BadResponse

関連ドキュメント

PHPランタイムの詳細については、「概要」をご参照ください。