使用rest api返回http状态代码

时间:2014-01-18 16:46:27

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

我在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。

我不知道要返回哪些代码。我只想知道如何返回代码。

1 个答案:

答案 0 :(得分:13)

你可以用这种方式重新思考你的代码

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数据是正确的方法。