使用PUT在PHP中检索数据——c# ->PHP使用Slim Rest框架

本文关键字:使用 PHP 框架 Rest Slim 数据 PUT 检索 | 更新日期: 2023-09-27 17:53:58

我是Slim的新手,我有一些问题通过使用"PUT"的httpwebrequest检索数据发送的东西。我知道http不是休息!;)并且我知道数据是正确发送的。那么,我错过了什么?是的,我可以通过头发送所有的数据,但我不想使用这样的工作。

所以这就是我所做的:

c#:

var request = WebRequest.Create(url) as HttpWebRequest;
request.ContentType = "application/x-www-form-urlencoded";
request.ProtocolVersion = HttpVersion.Version11;
request.KeepAlive = true;
// Set request method
request.Method = method.ToUpper(); // in this case: "PUT"

var dataByte = Encoding.UTF8.GetBytes("test=test"); // <-- DATA to be send
request.ContentLength = dataByte.Length;
using (Stream dataStream = request.GetRequestStream())
{
    dataStream.Write(dataByte, 0, dataByte.Length);
}

var res = (HttpWebResponse)request.GetResponse();
var resStream = res.GetResponseStream();
if (resStream != null)
{
    var reader = new StreamReader(resStream);
    responseFromServer = reader.ReadToEnd();
    reader.Close();
}
if (resStream != null) resStream.Close();
res.Close();

PHP: using Slim and "PUT"

$app->put('/someendpoint', function ($somevar) {
   // THIS IST THE PLACE WHERE I NEED THE DATA : "test"
});

在使用POST或GET(当然)时可以完美地工作,例如

if(isset($_POST['test']))
echo $_POST['test'];

但是我需要像

这样的东西
$_PUT['test']

…我怎么能这么做呢?我相信会有一个解决方案,我想很多人对此有问题。

提前感谢你的帮助!:)

使用PUT在PHP中检索数据——c# ->PHP使用Slim Rest框架

…发现:我做了一些研究,又读了一遍这个教程。一次又一次……);)

http://www.androidhive.info/2014/01/how-to-create-rest-api-for-android-app-using-php-slim-and-mysql-day-23/

我所要做的就是使用这个简洁的函数来获取正文信息以解析内容:

function verifyRequiredParams($required_fields) {
    $error = false;
    $error_fields = "";
    $request_params = array();
    $request_params = $_REQUEST;
    // Handling PUT request params
    if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
        $app = 'Slim'Slim::getInstance();
        parse_str($app->request()->getBody(), $request_params);
    }
    foreach ($required_fields as $field) {
        if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) {
            $error = true;
            $error_fields .= $field . ', ';
        }
    }
    if ($error) {
        // Required field(s) are missing or empty
        // echo error json and stop the app
        $response = array();
        $app = 'Slim'Slim::getInstance();
        $response["error"] = true;
        $response["message"] = 'Required field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty';
        echoRespnse(400, $response);
        $app->stop();
    }
}

和我必须改变我的API调用为:

$app->put('/someendpoint', function ($somevar) use($app){
    verifyRequiredParams(array('test'));
    $test= $app->request->put('test');
    echo $test;
});