php - Laravel 中的模型没有 Dingo 的查询结果 - 如何在失败时做出 RESTful 响应?

标签 php api rest laravel dingo-api

我正在使用 Laravel 基于 Dingo API 创建一个 API .

在我的 route ,我有:

Route::api('v1', function () {
    Route::resource('object', 'My\Namespace\MyController');
});

在 MyController 中:

class MyController extends \Illuminate\Routing\Controller {

    use Dingo\Api\Routing\ControllerTrait;

    public function index() {
        return MyObject::all();
    }

    public function show($id) {
        return MyObject::findOrFail($id);
    }

}

这意味着 api.domain.com/object 调用 MyController@index,它可以工作。由于数据库中没有项目,因此会输出一个空的 json 数组 []

api.domain.com/object/123 调用 MyController@show(123)。这是根据https://github.com/dingo/api/wiki/Responses 。但是,由于数据库中没有结果,我得到:

No query results for model [My\Namespace\MyObject].

我希望这会给出一个很好的 RESTful 错误。我该怎么做?

MyObject 的代码没什么特别的,它是一个扩展 Illuminate\Database\Eloquent\Model 的空类。

我使用的是 Laravel 4.2; Dingo 尚不支持 5。

最佳答案

您必须自己处理它并添加自定义错误,如here所述。 。 findOrFail() 将抛出 ModelNotFoundException 所以让我们捕获它:

API::error(function (Illuminate\Database\Eloquent\ModelNotFoundException $e){
    return Response::make(['error' => 'Resource not found'], 404);
});

关于php - Laravel 中的模型没有 Dingo 的查询结果 - 如何在失败时做出 RESTful 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645259/

相关文章:

python - 如何为Python安装xbmc模块

javascript - Instagram API : Is it possible to get a tagged photo from a certain date?

php - Zend_Currency 的 Symbol 属性的最大长度是多少?

php - mysql_fetch_assoc() 不显示任何内容

php - HTML 表单不通过 PHP 处理器将数据发布到 MySQL 数据库

python - 为什么这不会产生 JIRA 问题?

java - HttpServletResponse 到 javax.ws.rs.core.Response

c# - 在 OWIN TestServer 上调用 HTTP PUT

drupal - 发生客户端错误 - Drupal 8 REST API Post 方法

php - CodeIgniter - ci_sessions 迁移