我寫了一個小測試,以確保我可以從從我的移動應用做了一個POST請求提取數據。它工作正常,
$rawJsonObj = file_get_contents('php://input');
$json = json_decode($rawJsonObj, true);
$decodedData = base64_decode($json['data']);
file_put_contents('student-data/'.$json['username'].'.txt', $decodedData);
然後在我的Slim Framework
程序,我嘗試同樣的邏輯,我用它來創建爲空文件的實際數據。但是我仍然可以訪問請求中發送的用戶名和密碼。
$app->post('/api/v1/endpoint', function ($request, $response, $args) {
$rawJsonObj = $request->getParams();
$json = json_decode($rawJsonObj, true);
$decodedData = base64_decode($json['data']);
file_put_contents('test.txt', $decodedData);
return $response;
}
用戶名和密碼顯示在請求中,我可以在向文件請求中寫入數據時看到它們。
$data = $request->getParams();
file_put_contents('2.txt', $data);
數據被寫爲文件,
","username":"myuname","password":"myPword"}
但base64encoded串丟失,
例
在斯威夫特我創造這樣的字典,然後將其作爲json發佈,
let dict: [String: Any] = [
"username": named,
"password": password,
"data": data.base64EncodedString()
]
if let json = try? JSONSerialization.data(withJSONObject: dict, options: []) {
request.httpBody = json
}
問題
如何請求主體訪問實際"data": data.base64EncodedString()
在Slim Framework 3
?
我認爲這與$rawJsonObj = file_get_contents('php://input');
實際處理數據相比Slim的方式有關嗎?
我不知道答案,但第一個片段顯示JSON不是任何類型的參數。這是請求主體。 –
你是說在測試中?但是我發佈JSON,所以它不會是請求體中的JSON? – wuno
沒關係。我只看了一下'getParams()'的實現,它應該真的返回兩者。你是否發送了一個Content-Type頭來告訴它實際上是JSON? –