Laravel REST API类型保留(例如,如何防止将int作为字符串发送)

时间:2013-06-10 18:29:11

标签: php json type-conversion laravel laravel-4

This tutorial展示了如何使用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_idid被解释并以字符串形式发送,而不是整数,尽管数据库类型INTEGER正在应用于这些值来自的列。

尽管PHP处理好类型杂耍,但是我们构建的REST API的其他语言对类型很挑剔,强制客户端对来自API的所有数据进行类型转换是没有意义的它是如何在数据库中表示的。

如何在服务器上保留数据库的数据类型,因此客户端不必执行保留它们的工作。

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

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

1 个答案:

答案 0 :(得分: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