我建立結構如下API:
- 方法
POST
- URI
/words
。 - body
{"word":"example"}
。
這個請求應該添加到數據庫的話,如果我測試它的httpie
一切都很好。
$ http POST localhost:8000/words word="new word2"
HTTP/1.1 200 OK
Access-Control-Allow-Headers: application/json
Access-Control-Allow-Origin: http://localhost:8080
Connection: close
Content-Type: application/json
Host: localhost:8000
X-Powered-By: PHP/7.0.12-1+deb.sury.org~xenial+1
{
"test": {
"method": "POST",
"input": {
"word": "new word2"
},
"post": []
},
"words": {
"id": "581f2f118b0414307476f7b3",
"word": "new word2"
}
}
在test
我放在php
獲得通過變量:
$method = $_SERVER['REQUEST_METHOD'];
$input = json_decode(file_get_contents('php://input'),true);
$post = $_POST;
我們可以看到,$_POST
是空的。如果我使用JavaScript:
$(form).submit(function(e) {
var url = "http://localhost:8000/words";
var data = {"word" : form.elements["word"].value };
$.ajax({
type: "POST",
url: url,
data: data,
dataType: 'json',
success: function(data)
{
console.log(JSON.stringify(data));
}
});
e.preventDefault();
});
我獲得以下控制檯日誌:
{
"test":{
"method":"POST",
"input":null,
"post":{
"word":"word from form"
}
},
"words":{
"id":"581f34b28b0414307476f7b6",
"word":null
}
}
現在input
是空的。單詞爲空,因爲我正在處理$input["word"]
,從php://input
。我的問題:
- 我應該處理
$_POST
,還是同時檢查兩個變量? - 如何使用這些方法的最佳實踐?
- 我可以從瀏覽器發送
php://input
或從命令行收費$_POST
發送httpie
?
哇!很好的答案!比你非常。 – Daniel