php - Laravel REST API 类型保护(例如如何防止将整数作为字符串发送)

标签 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 被解释和发送为字符串,而不是 int,尽管数据库类型为 INTEGER 应用于这些值来自的列。

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

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

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

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

最佳答案

我阅读了 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

关于php - Laravel REST API 类型保护(例如如何防止将整数作为字符串发送),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030435/

相关文章:

java - 如何从 Json 对象获取值...?

php - .htaccess - 将允许的 URL 列入白名单

php - 如何在双引号内使星形图标变大

php - 只能通过手机访问的网址

json - 如何避免为 Data.Tree 创建孤立的 FromJSON 实例

android - 使用带有 'Hello World' 的 JSON 作为示例

c++ - c++0x中如何检测转换是否失败

python - 我想在Python中将字符串列表(温度值: [ '23.14C' , '19.91C'] ['54.04F', '32.64F'])转换为 float

sql - Postgres 将字符串转换为时间

javascript - 加载动态 php 生成的 javascript