3

本教程展示了如何使用 Laravel 4 创建一个基本的基于 JSON 的 REST API。在文章的最后,他们展示了 REST API 的输出:

{
    "error": false,
    "urls": [
        {
            "created_at": "2013-02-01 02:44:34",
            "description": "I feel for him",
            "id": "3",
            "updated_at": "2013-02-02 18:44:18",
            "url": "http://yahoo.com",
            "user_id": "1"
        }
    ]
}

这里的问题是user_idandid被解释和发送为字符串,而不是 ints,尽管数据库类型INTEGER被应用于这些值来自的列。

尽管 PHP 可以很好地处理类型转换,但将使用我们构建的 REST API 的其他语言对类型很挑剔,强制客户端对来自 API 的所有数据进行类型转换以匹配其表示方式是没有意义的在数据库中。

我怎样才能在服务器上保存数据库的数据类型,这样客户端就不必做保存它们的工作了。

理想情况下,有一个解决方案,您不必遍历服务器上的结果并在那里进行显式类型转换。我希望能够在值从数据库中出来时保留它们,因此 CPU 周期不会浪费在转换上。

注意:我们将在构建 API 时使用MySQL,以防万一改变任何答案。

4

1 回答 1

2

我阅读了有关Nettuts+的教程,但无法重现 API 生成的输出。当使用模型 Model::toArray() 方法从数据库返回数据时,ID 字段总是作为整数返回。

返回数据的另一种方法(假设不需要额外的数据)是简单地返回模型本身。例子:

Route::get('users', function () {
    return User::all(); // returns JSON containing all users
})

当 L4 仍处于测试状态时,可能将数字作为字符串返回是一个问题。

这是关于使用 L4 进行 API 设计的另一个不错的教程。也许http://laracasts.com/video/simple-api-development-with-laravel

于 2013-06-10T20:34:23.477 回答