在POST API中响应json有效负载,而不是json格式



我有一个接受Json有效负载的Rest API,我格式化数据并将其导入SQL数据库。然而,当接收到有效负载时,发送方正在等待响应。

他们不想要一个典型的HTTP 200 OK,他们想要一个带价格等的格式化Json响应。

每当我输出响应到正文时,它似乎没有被格式化为Json,而是显示为字符串,这会导致程序流出错。

我想检查格式是否正确和方法。

忽略所有处理程序和授权,我通常通过

获取有效负载:
$payload = (file_get_contents('php://input')); 

做我需要做的数据然后回复如下:

(当然,这是在处理程序语句中包装的,但成功的代码段)

http_response_code(200);
$data = array(
"sub_total" => 1000,
"ExtraeChargeTotal" => 0,
"Vat" => 0,
"Total" => 1000
);
$response = json_encode($data);
echo $response  ;

这是正确的回应方式吗?一切都按照我的想法进行,在邮差中似乎也是如此。然而,响应是一个字符串,而不是Json

要恢复注释,当json数据必须通过PHP发送时,重要的是通过以下方式强制Content-Type头:

header('Content-Type: application/json; charset=utf-8');

报头后,用echo发送数据。

例如:

http_response_code(200);
$data = array(
"sub_total" => 1000,
"ExtraeChargeTotal" => 0,
"Vat" => 0,
"Total" => 1000
);
if($response = json_encode($data)){
header('Content-Type: application/json; charset=utf-8');
echo $response  ;
}