【问题标题】:Codeigniter API error returningCodeigniter API 错误返回
【发布时间】:2014-04-08 15:40:56
【问题描述】:

您好,谁有使用 Phil Sturgeons RESTFUL 库进行 codeigniter 的经验。我决定为我们的数据库创建一个 Web 服务,以便提供从多个应用程序对数据库的访问。该网站目前是在 Codeigniter 中开发的,因此它是使用其余 API 库的简单解决方案。

我遇到的问题是我试图在出现问题时返回特定错误。

目前我故意返回如下错误:

require(APPPATH . 'libraries/REST_Controller.php');

class Settings_api extends REST_Controller {

    function settings_get()
    {
        $this->response(NULL, 404);
    }
}

如果我直接访问 url,那么我只会收到一个空白页面,如果我用消息替换“NULL”,我可以返回一条消息,但没有什么可以说它是 404 错误,而如果我通过调用该页面php 使用以下

$user = json_decode(file_get_contents('http://www.example.co.uk/api/settings_api/settings/'));

echo $user;

然后它显示以下行

Message: file_get_contents(http://www.example.co.uk/api/settings_api/settings/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 

在这两种情况下,我都希望返回 404 错误以及我提供的消息。这可能吗?如果可以,您能否指出我正确的方向。

谢谢

【问题讨论】:

  • A 404 就是 404,这意味着您请求的内容根本不存在。您不应该故意拨打 404。

标签: api codeigniter rest php


【解决方案1】:

据我所知,PHP 生成的错误消息对此无能为力(除了使用@ 运算符,我不建议这样做)。因此,您唯一的选择是手动检查file_get_content() 的返回值:

$response = file_get_contents('http://...');

if ($response === false) {
    // return whatever you feel is appropriate
} else {
    $user = json_decode($response);
    echo $user;
}

编辑
在 Stackoverflow 上找到了这个 answer here,这正是您要找的。​​p>

【讨论】:

  • 我明白了,如果我自己只使用 api 就可以了,但很有可能它会传递给其他开发人员以与他们自己的应用程序集成,因此我更愿意返回更具体的东西到问题。如果我不返回 http 响应代码,我可以返回一条消息,你认为这样做更合适还是需要一个 http 响应代码
  • 感谢您的更新。现在这更有意义了,假设我只需要在我提供给其他 api 用户的任何文档中包含类似的内容。感谢您的帮助。
  • 你应该经常检查response !== false,想想网络错误。
猜你喜欢
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多