邮递员返回404,而网站返回200

时间:2016-08-01 17:50:26

标签: php laravel postman

我有一个Laravel服务器在http://localhost:8000/api/v1_0/login服务api。

从网页(登录表单)点击时,此API可以正常运行200 OK,但是当我尝试使用Postman访问相同的API时,它会返回404.我确定我的标题和网址拼写是正确的。这是一个错误吗?还有什么可能的原因?

1 个答案:

答案 0 :(得分:0)

以防万一有人仍然需要答案。我检查了@ ZI3n发布的答案,但该解决方案不适用于我。

Postman收到一个字符串text\html,它是默认的Content-Type,所以我怀疑用来处理JSON的代码某种程度上形成了Postman无法识别为JSON的字符串。但是,如果将主体类型更改为JSON,则可以在收到时将其视为JSON。

因此,该请求已以JSON格式的文本形式接收,但未被识别为JSON内容,并且由于我期望使用JSON,因此状态代码被忽略并替换为404 Not Found。不确定这是服务器还是邮递员。

因此,我直接在浏览器上访问了URL,很明显虽然显示了JSON,但仍然读为text/html而不是application/json

下一步是再次重构代码,这次我通过将字符串分配给变量$json来重新处理JSON字符串,如下所示:

//assigning previous json string to $json
$json = $originalEchoedJsonString;

//reprocessing the string a converting it back to object
$newJson = json_decode($json);

//preparing to be send

//if PHP version 5.4+
http_response_code(200);

// Any PHP version specially 5.3 and under
header('HTTP/1.1 200 Ok', true, 200);

header('Content-type: application/json; charset=UTF-8;');

//echoing JSON back with json_encode();
echo json_encode($newJson);

完成此操作后,我再次与Postman发送了请求,瞧,我的状态为200 OK,并且该字符串正确显示为JSON文件。浏览器JSON格式化程序也将其识别为JSON。