Тип данных изменен После смены сервера - PullRequest
0 голосов
/ 11 сентября 2018

Я создал несколько API-интерфейсов с использованием laravel, а затем изменил сервер и перенес все файлы на другой сервер, который является 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 to int. Как я могу получить ответ с тем же типом данных.

1 Ответ

0 голосов
/ 11 сентября 2018

Возможно, вы также изменили версию PHP на 7.x +, и ваши функции / методы используют подсказки типов?

В отличие от предыдущих версий PHP, версии 7+ позволяют вводить строки подсказок, целые числа и т. Д., И PHP будет пытаться преобразовать значение в соответствующий тип.Например:

public function test(string $name)

ожидает строку, и даже если вы пройдете тест (1), вы все равно получите строку со значением 1. Обратный путь также действителен, если вы передаете строку«1» и функция ожидает int, она попытается привести его к int.

Вы можете легко проверить, так ли это, включив строгий режим PHP, добавив

declare(strict_types = 1);

В строгом режиме PHP вызовет исключение TypeError, так что это, вероятно, нарушит ваш код, но теперь вы поймете, что именно это является причиной проблемы.

В любом случае, как прокомментировал Чич, вы всегда можетеtype приводит целые числа к строкам, но на самом деле это выглядит как целые числа, а не как строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...