[php] Postman과 함께 원시 JSON을 통해 POST 데이터 보내기

나는 Postman (Chrome에서 열리지 않는)을 가지고 있으며 원시 json을 사용하여 POST 요청을 수행하려고합니다.

본문 탭에서 “원시”를 선택하고 다음 본문과 함께 “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과 함께 작동하지 않는 이유는 무엇입니까?


Postman 스크린 샷 :

여기에 이미지 설명 입력

및 헤더 :

여기에 이미지 설명 입력



답변

jQuery원시 읽기 와 달리 JSONPHP에서 디코딩해야합니다.

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

php://input 요청 본문에서 원시 데이터를 읽을 수있는 읽기 전용 스트림입니다.

$_POST양식 변수이므로 다음을 사용 하여 form라디오 버튼 으로 전환해야 postman합니다.

foo=bar&foo2=bar2

원시 게시하려면 jsonjquery:

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


답변

바이너리 옆의 드롭 다운에서 JSON 옵션을 확인하십시오. 원시를 클릭하면. 해야 할 일

Skill synon은 json을 우편 배달부에게 전달합니다.


답변

meda의 대답은 완전히 합법적이지만 코드를 복사하면 오류가 발생했습니다!

어딘가에 "php://input"잘못된 문자가 있습니다 (따옴표 중 하나 일 수 있습니까?).

"php://input"수동으로 코드를 입력했을 때 작동했습니다. 알아내는 데 시간이 걸렸습니다!


답변

나는 같은 문제에 직면하고 있었고 다음 코드가 나를 위해 일했습니다.

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


답변

Postman 기본 앱을 설치하세요. Chrome 확장 프로그램은 더 이상 사용되지 않습니다. (내 창이 자체 창에서 열렸지만 여전히 Chrome 앱으로 실행 됨)


답변