日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

HTTP請求處理程序(HTTP Handler)

您可以使用HTTP Handler更方便地處理HTTP請求。當調用函數時,函數計算使用您提供的執行方法來處理HTTP請求。本文介紹了PHP HTTP請求處理程序的結構和使用示例等。

HTTP Handler簽名

PHP的HTTP Handler簽名如下。您只需實現一個函數,就能響應HTTP請求。

<?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 Handler名稱。

  • $request:HTTP請求結構體。

  • Response:HTTP返回結構體。

  • $context:上下文信息。具體信息,請參見上下文

HTTP請求結構體

$request參數遵循PSR(HTTP message interfaces)標準。更多信息,請參見PSR-7-http-message。具體的代碼定義遵循PSR Http Message

$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();

參數

類型

描述

$headers

Array

存放來自HTTP客戶端的鍵值對,鍵值對中的值為數組類型,遵循PSR-7標準。

$path

String

HTTP URL中的路徑。

$queries

Array

存放來自HTTP URL中的查詢部分的鍵值對,鍵值對中的值可以是字符串或數組。

$method

String

HTTP方法。

$clientIP

String

HTTP客戶端的IP地址。

$requestURI

String

請求中除host以外的URL。

$body

String

HTTP請求中的請求體數據。

說明

Headers鍵值對中的key中包含以下字段或以x-fc-開頭的key均會被忽略,因此,不支持自定義。

  • connection

  • keep-alive

HTTP響應結構體

$request參數遵循PSR(HTTP message interfaces)標準。以下代碼為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可以是字符串,也可以是Stream。如果使用Stream格式,必須要實現PSR-7-http-message標準中的StreamInterface API接口。

PHP HTTP函數示例

下文代碼示例演示了如何使用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

    path

    請求路徑以及所有查詢參數的總大小不能超過4 KB。

    body

    同步調用請求的Body的總大小不能超過32 MB,異步調用請求的Body的總大小不能超過128 KB。

  • 響應限制

    如果超過以下限制,會返回502狀態碼和BadResponse錯誤碼。

    字段

    限制說明

    HTTP狀態碼

    錯誤碼

    headers

    響應頭中的所有鍵和值對的大小不能超過8 KB。

    502

    BadResponse

更多信息

PHP運行環境的詳細信息,請參見環境說明