在PHP中创建一个API,它可以接受Request / response的压缩、压缩和deflate


make a API in PHP which accept Request / response Zipped, gziped, deflate

我正在使用PHP进行API开发,所以我需要一个函数来查看请求编码并设置基于编码的响应,如"Zipped", "gziped", "deflate"等,输出应该在JSON中。

我试图使用下面的代码,但当运行导致错误"此网页不可用'n ERR_CONTENT_DECODING_FAILED"

所以,请建议我们如何实现这样的事情。

function convertToHeaderEncoding($input, $encoding, $debug = 0)
{   
    $compressed_out = "";
    if($encoding == "gzip") 
    {       
        $compressed_out = gzencode($input);
        if($debug == 1)     
            echo 'Gzipd Output'."'n".'Before compression size '.strlen($output).' bytes'."'n".' After compression size '.strlen($compressed_out).' bytes';
        header("Content-Encoding: gzip");
        return $compressed_out;     
    }
    else    
        return $input;      
}

$arr = array("Key1"=>"我发现这很好,将下面的片段保存在php/目录中,然后编辑prependd .php文件,并添加一个require语句,需要下面的compression.php文件。完成后,观察(tail -f) php错误日志,看看实际的压缩结果。我发现这很有效,将下面的片段保存在php/目录中,然后编辑prependd .php文件并添加一个require语句,该语句需要下面的compression.php文件。完成后,观察(tail -f) php错误日志,看看实际的压缩结果。我发现这很有效,将下面的片段保存在php/目录中,然后编辑prependd .php文件并添加一个require语句,该语句需要下面的compression.php文件。完成后,查看(tail -f) php错误日志,查看实际压缩的结果");

$jsonString = json_encode($arr, true);
$output = convertToHeaderEncoding($jsonString, "gzip", 1);
echo $output;

我不确定你的代码是否可以这样工作。试试这个解决方案:

// Turn on output buffering with the gzhandler
ob_start('ob_gzhandler');
// Output as normal
echo json_encode($data);