我已经使用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
}
问题是ID
,MediaType
,Status
从string
变为int
。我如何获得相同数据类型的响应。 / p>
答案 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所评论的那样,您始终可以将整数类型强制转换为字符串,但是确实的确看起来这些应该是整数而不是字符串。