web-dev-qa-db-ja.com

送る POST 郵便配達員との生のjsonを介したデータ

私はPostman(Chromeで開かないもの)を持っていて、raw jsonを使ってPOSTリクエストをやろうとしています。

「Body」タブでは、「raw」を選択して、この本文の「JSON(application/json)」を選択しています。

{
    "foo": "bar"
}

ヘッダには1があります、Content-Type: application/json

PHP側では今のところprint_r($_POST);をやっているだけで、空の配列になっています。


私がjQueryを使っているならば:

$.ajax({
    "type": "POST",
    "url": "/rest/index.php",
    "data": {
        "foo": "bar"
    }
}).done(function (d) {
    console.log(d);
});

私は期待どおりになっています:

Array
(
    [foo] => bar
)

では、なぜPostmanと連携しないのでしょうか。


ポストマンのスクリーンショット:

enter image description here

ヘッダー:

enter image description here

65
smerny

jQueryとは異なり、生のJSONを読むためにはPHPでデコードする必要があります。

print_r(json_decode(file_get_contents("php://input"), true));

php://inputは、要求本体から生データを読み取ることを可能にする読み取り専用のストリームです。

$_POSTはフォーム変数です。formpostman radiobuttonに切り替える必要があります。

foo=bar&foo2=bar2

生のjsonjqueryとともに投稿するには、次のようにします。

$.ajax({
    "url": "/rest/index.php",
    'data': JSON.stringify({foo:'bar'}),
    'type': 'POST',
    'contentType': 'application/json'
});
23
meda

medaの答えは完全に合法ですが、コードをコピーしたときにエラーが発生しました。

"php://input"のどこかに無効な文字があります(おそらく引用符の1つですか?)。

手動で"php://input"コードを入力したとき、それはうまくいきました。把握するためにしばらく時間がかかりました!

7
CoredusK

バイナリの隣のドロップダウンからJSONオプションをチェックするだけです。 rawをクリックしたときこれはすべきです

skill synon pass json to postman

6
Itachi

私は同じ問題に直面していました、以下のコードは私のために働きました:

$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);

4
Neo

Postmanネイティブアプリをインストールし、Chrome拡張機能は推奨されなくなりました。 (私のものは自分のウィンドウで開いていたがまだChromeアプリとして走っていた)

2