【问题标题】:Returning http status codes with a rest api使用 rest api 返回 http 状态代码
【发布时间】:2014-02-08 00:34:39
【问题描述】:

我正在用 php 构建自己的 rest api 以进行练习。我可以评估发送到我的 api 的 http 代码(post、put、delete、get)。但是当我发出我的回复时,我真的只是在打印一个 json。例如,我像这样在我的 api 中构建响应

    public function actionTest()
    {
        $rtn=array("id":"3","name":"John");
        print json_encode($rtn);
    }

无论如何我都不会操纵标题。通过阅读 stackoverflow,我了解到我应该返回 http 响应代码以匹配我的 api 结果。如何在我的 api 上构建并返回响应代码。我只是不明白我该怎么做,因为现在我只是打印出一个 json。

我不是在询问要返回哪些代码。我只是想知道一般如何返回代码。

【问题讨论】:

  • 这是要走的路吗http_response_code(); 另外,打印 json 是接受发送响应的方式吗?

标签: php api rest http-headers http-response-codes


【解决方案1】:

你可以这样重新思考你的代码

public function actionTest()
{
    try {
        // Here: everything went ok. So before returning JSON, you can setup HTTP status code too
        $rtn = array("id", "3", "name", "John");
        http_response_code(200);
        print json_encode($rtn);
    }
    catch (SomeException $ex) {
        $rtn = array("id", "3", "error", "something wrong happened");
        http_response_code(500);
        print json_encode($rtn);
    }
}

基本上,在流输出(JSON数据)之前,您可以通过http_response_code($code)函数设置HTTP状态码。

关于您在评论中的其他问题,是的,打印 JSON 数据是正确的方法。

【讨论】:

  • 我用过你提到的“http_response_code(500);”但仍然无法在标题中显示状态我用户邮递员桌面应用程序调用休息 api
  • 嗨@SachinSarola,请检查您在调用$result = http_response_code(500) 之前 没有发送任何输出。另外,请检查$result变量中返回的实际值,以确保操作成功完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2019-11-20
相关资源
最近更新 更多