阿里云函数基础使用

 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');

    $_SERVER['REQUEST_METHOD'] = $method;
    $_SERVER['REQUEST_URI']    = $requestURI;
    $_SERVER['REMOTE_ADDR']    = $clientIP;
    $_SERVER['CONTENT_TYPE']   = $headers['Content-Type'][0];

    $_POST = [];
    if (strpos($_SERVER['CONTENT_TYPE'], 'application/x-www-form-urlencoded') !== false) {
        mb_parse_str(urldecode($body), $_POST);
    } elseif (strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false) {
        parse_raw_http_request($_SERVER['CONTENT_TYPE'], $body, $_POST);
    } else {
        $_POST = json_decode($body, true);
    }
    $_GET     = $queries;
    $_POST    = empty($_POST) ? [] : $_POST;
    $_REQUEST = array_merge($_GET, $_POST);



    //处理自己的代码


    //返回结果给用户端,需要自行处理状态和返回格式
    $respHeaders = array('Content-Type' => 'application/json');
    $respBody = json_encode($_SERVER);
    return new Response(200, $respHeaders, $respBody);
}

function parse_raw_http_request($content_type, $input, array &$a_data)
{
    preg_match('/boundary=(.*)$/', $content_type, $matches);
    $boundary = $matches[1];
    $a_blocks = preg_split("/-+$boundary/", $input);
    array_pop($a_blocks);
    foreach ($a_blocks as $id => $block) {
        if (empty($block)) {
            continue;
        }
        if (strpos($block, 'application/octet-stream') !== false) {
            preg_match("/name=\"([^\"]*)\".*stream[\n|\r]+([^\n\r].*)?$/s", $block, $matches);
        } else {
            preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches);
        }
        if (!empty($matches[1]) && !empty($matches[2])) {
            // print_r($matches);
            $a_data[$matches[1]] = $matches[2];
        }
    }
}


?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值