本教程展示了如何使用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_id
和id
被解释和发送为字符串,而不是整数,尽管INTEGER
的数据库类型被应用于这些值来自的列。
尽管PHP可以很好地处理类型转换,但其他使用我们构建的REST API的语言对类型很挑剔,强迫客户端对来自API的所有数据进行类型转换以匹配其在数据库中的表示方式是没有意义的。
如何在服务器上保留数据库的数据类型,这样客户端就不必做保存它们的工作了
理想情况下,有一个解决方案,您不必在服务器上遍历结果并在那里进行显式类型转换。我希望有一些东西可以保留值,因为它们是从数据库出来的,所以CPU周期不会浪费在转换上。
注意:当我们构建API时,我们将使用MySQL,以防更改任何答案。
我阅读了Nettuts+的教程,我无法重现API生成的输出。当使用models::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