Lumen 5.7 Предел ответа JSON - PullRequest
0 голосов
/ 29 ноября 2018

В моей БД хранится большой фрагмент текста, и я могу успешно извлечь его из моих DB, dd() и log::debug() содержимого без проблем.Текст можно увидеть здесь: https://pastebin.com/KQNYW623

Проблема возникает, когда я пытаюсь вернуть JSON-ответ текста.На чистой установке Lumen 5.7 в файле маршрута api.php у меня есть этот маршрут:

$router->get('/', function () use ($router) { return json_encode("*insert large content here*"); //this is where the big text goes, I won't paste it fully here but it's here in my code as a string });

Если я получу доступ к этому маршруту, я получу пустую страницу.Абсолютно ничего не появляется ни на моем экране, ни в Почтальоне, ни в curl.Там нет ошибок в журналах ошибок, ничего.Просто пусто.

Если я помещу что-то, что намного меньше, чем большой текст (например, привет), у меня не будет проблем с выводом ответа.Может кто-нибудь, пожалуйста, пролить свет на то, что является основной причиной этой проблемы?Существует ли ограничение по количеству символов для ответов в Lumen / Laravel?

--- UPDATE ---

Так что, если я сделаю echo response()->json($string) (где $string), это переменная, которая содержитдлинный текст) Я вижу, что строка была закодирована в JSON и заголовки ответа были добавлены, и все это выводится на экран.Однако выполнение return response()->json($string) по-прежнему возвращает пустой ответ.

Кто-нибудь знает, почему return не отправляет обратно данные из response()?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Исправлена ​​проблема: класс промежуточного программного обеспечения CORS, который я выбрал отсюда: введите описание ссылки здесь

Ответы с Content-Length> 6K манипулировали, чтобы иметь длину0 но все равно вернуть 200 ответ.Спасибо за помощь и советы всем.

0 голосов
/ 29 ноября 2018

Чтобы вернуть ответ json с люменом, похожим на laravel, я думаю, вы можете посмотреть на:

https://lumen.laravel.com/docs/5.7/responses

Метод json автоматически установит заголовок Content-Type наapplication / json, а также преобразовать данный массив в JSON с помощью json_encode

Также, если у вас есть модель, связанная с вашей базой данных, вы можете автоматически преобразовать свой json в массив, см .:

если ваша база данных имеет тип поля JSON или TEXT, который содержит сериализованный JSON, добавление массива, приведенного к этому атрибуту, автоматически десериализует атрибут в массив PHP

https://laravel.com/docs/5.7/eloquent-mutators#array-and-json-casting

...