数据类型已更改服务器更改后

时间:2018-09-11 07:16:14

标签: laravel api response

我已经使用laravel创建了一些API,然后更改了服务器并将所有文件传输到其他服务器(即AWS ec2),但是在更改服务器API的响应数据类型后,其在IOS应用中出现了错误。

以下是服务器更改之前的响应

{
    "current_page": 1,
    "data": [
        {
            "Id": "127",
            "Title": "Test",
            "AuthorName": "Test",
            "AuthorDesignation": "dg",
            "Description": "Test",
            "Image": "1535538907.JPG",
            "MediaType": "0",
            "Date": "2018-08-29 05:35:07",
            "Status": "1",
            "DonateLink": null,
            "created_at": "-0001-11-30 00:00:00",
            "updated_at": "2018-08-29 10:35:07",
            "delete_at": "0000-00-00 00:00:00",
            "Thumbnail": "1535538907.JPG"
        }
    ],
    "from": 1,
    "last_page": 1,
    "next_page_url": "",
    "path": "myurl/api/news",
    "per_page": 10,
    "prev_page_url": "",
    "to": 5,
    "total": 5,
    "status": true
}

更改后,以下服务器是响应

{
    "current_page": 1,
    "data": [
        {
            "Id": 127,
            "Title": "Test",
            "AuthorName": "Test",
            "AuthorDesignation": "dg",
            "Description": "test",
            "Image": "1535538907.JPG",
            "MediaType": 0,
            "Date": "2018-08-29 10:35:07",
            "Status": 1,
            "DonateLink": null,
            "created_at": "-0001-11-30 00:00:00",
            "updated_at": "2018-08-29 15:35:07",
            "delete_at": "0000-00-00 00:00:00",
            "Thumbnail": "1535538907.JPG"
        }
    ],
    "from": 1,
    "last_page": 1,
    "next_page_url": "",
    "path": "my_url/api/news",
    "per_page": 10,
    "prev_page_url": "",
    "to": 5,
    "total": 5,
    "status": true
}

问题是IDMediaTypeStatusstring变为int。我如何获得相同数据类型的响应。 / p>

1 个答案:

答案 0 :(得分:0)

也许您也将PHP版本更改为7.x +,并且您的函数/方法正在使用类型提示?

与以前的PHP版本不同,7 +版本允许您键入提示字符串,整数等,PHP会尝试将值转换为适当的类型。例如:

public function test(string $name)

期望一个字符串,即使您通过test(1),您仍然会收到一个值为1的字符串。相反,如果您传递一个字符串“ 1”并且该函数需要一个int值,这也是有效的,它将尝试将其强制转换为int。

通过添加启用PHP严格模式,您可以轻松检查是否是这种情况

declare(strict_types = 1);

在严格模式下,PHP会引发TypeError异常,因此它可能会破坏您的代码,但是现在您将要解决此问题。

在任何情况下,正如Tschitsch所评论的那样,您始终可以将整数类型强制转换为字符串,但是确实的确看起来这些应该是整数而不是字符串。