全部产品
Search
文档中心

Function Compute:Penanganan HTTP

更新时间:Jul 02, 2025

Anda dapat menggunakan penanganan HTTP untuk memproses permintaan HTTP secara efisien. Saat sebuah fungsi dipanggil, Function Compute menggunakan penanganan yang Anda tentukan dalam kode fungsi untuk memproses permintaan HTTP. Topik ini menjelaskan struktur dan memberikan contoh penanganan HTTP PHP.

Tanda tangan untuk penanganan HTTP

Kode sampel berikut menggambarkan tanda tangan untuk penanganan HTTP PHP. Anda hanya perlu mengimplementasikan satu fungsi untuk menanggapi permintaan 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'
    );
}    

Item berikut menggambarkan bidang dalam kode sampel:

  • handler: nama dari penanganan HTTP.

  • $request: struktur permintaan HTTP.

  • Response: struktur respons HTTP.

  • $context: informasi konteks. Untuk informasi lebih lanjut, lihat Konteks.

Struktur permintaan HTTP

Parameter $request mengikuti standar PHP Standards Recommendation (PSR) pada antarmuka pesan HTTP. Untuk informasi lebih lanjut tentang antarmuka pesan HTTP, lihat PSR-7-http-message. Untuk informasi lebih lanjut tentang standar pengkodean, lihat PSR HTTP Message.

Kode sampel berikut menunjukkan informasi yang dibawa oleh parameter $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();

Bidang

Tipe

Deskripsi

$headers

Array

Pasangan kunci-nilai yang dikirim oleh klien HTTP. Nilainya adalah array dan mengikuti standar PSR-7.

$path

String

Path dari URL HTTP.

$queries

Array

Pasangan kunci-nilai dari parameter query dalam URL HTTP. Nilainya bisa berupa string atau array.

$method

String

Metode HTTP.

$clientIP

String

Alamat IP klien HTTP.

$requestURI

String

URL yang tidak termasuk hostname.

$body

String

Body dari permintaan HTTP.

Catatan

Parameter key dalam pasangan kunci-nilai diabaikan jika parameter key berisi salah satu bidang berikut atau dimulai dengan x-fc-. Oleh karena itu, Anda tidak dapat menyesuaikan parameter key.

  • connection

  • keep-alive

Struktur respons HTTP

Parameter $request mengikuti standar PSR pada antarmuka pesan HTTP. Kode berikut menunjukkan konstruktor struktur dari respons HTTP.

<?php
/**
     * @param int    $status  Kode status untuk respons, jika ada.
     * @param array  $headers Header untuk respons, jika ada.
     * @param mixed  $body    Body aliran.
     */
    public function __construct(
        $status = 200,
        array $headers = array(),
        $body = null,
    )
    {
       //...
    }
Catatan

Bidang $body bisa berupa string atau aliran. Jika Anda menggunakan body bertipe aliran, Anda harus mengimplementasikan API StreamInterface dalam standar PSR-7-http-message.

Contoh

Kode sampel berikut memberikan contoh cara menggunakan $request dan $Response dalam fungsi 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");

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

Batasan

  • Batasan Permintaan

    Jika permintaan melebihi salah satu batasan berikut, sistem akan mengembalikan kode status 400 dan kesalahan InvalidArgument.

    Bidang

    Deskripsi

    Kode status HTTP

    Kode kesalahan

    headers

    Total ukuran kunci dan nilai dalam header permintaan tidak boleh melebihi 8 KB.

    400

    InvalidArgument

    path

    Total ukuran path permintaan dan parameter query tidak boleh melebihi 4 KB.

    body

    Total ukuran body dari permintaan pemanggilan sinkron tidak boleh melebihi 32 MB. Total ukuran body dari permintaan pemanggilan asinkron tidak boleh melebihi 128 KB.

  • Batasan Respons

    Jika respons melebihi salah satu batasan berikut, sistem akan mengembalikan kode status 502 dan kesalahan BadResponse.

    Bidang

    Deskripsi

    Kode status HTTP

    Kode kesalahan

    headers

    Total ukuran kunci dan nilai dalam header respons tidak boleh melebihi 8 KB.

    502

    BadResponse

Referensi

Untuk informasi lebih lanjut tentang runtime PHP, lihat Ikhtisar.