Lumen 5.7 JSON 响应限制

问题描述 投票:0回答:3

我的数据库中存储了一大段文本,可以成功地从我的

DB
dd()
log::debug()
内容中提取它,没有任何问题。文字可以在这里看到:https://pastebin.com/KQNYW623

当我尝试返回文本的 JSON 响应时,问题就出现了。在

api.php
路线文件中安装干净的 Lumen 5.7 时,我有以下路线:

$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
});

如果我访问此路线,我会看到一个空白页面。我的屏幕、Postman 或

curl
上绝对没有任何内容出现。错误日志中没有任何错误,什么也没有。只是空白。

如果我放置比大文本小得多的其他内容(例如 hello world),则输出响应没有问题。有人可以解释一下这个问题的根本原因是什么吗? Lumen/Laravel 中的回复有字符限制吗?

--- 更新 ---

因此,如果我这样做

echo response()->json($string)
(其中
$string
)是一个保存长文本的变量),我可以看到字符串已被编码为 JSON,并且已添加响应标头,所有这些都输出在屏幕上。然而,执行
return response()->json($string)
仍然会继续返回空白响应。

有人知道为什么

return
不从
response()
发回数据吗?

php json laravel lumen
3个回答
0
投票

要像laravel一样返回带有lumen的json响应,我想你可以看看:

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

json 方法会自动将 Content-Type 标头设置为 application/json,并使用 json_encode 将给定数组转换为 JSON

此外,如果您有一个与数据库关联的模型,您可以自动将 json 转换为数组,请参阅:

如果您的数据库具有包含序列化 JSON 的 JSON 或 TEXT 字段类型,则将数组转换添加到该属性将自动将该属性反序列化为 PHP 数组

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


0
投票

解决了问题:我从这里获取的 CORS 中间件类:在此处输入链接描述

Content-Length
> 6K 的响应被操纵为长度为 0,但仍返回 200 响应。感谢大家的帮助和建议。


0
投票

我遇到的问题听起来很相似,并且也有相同的 CORS 中间件。您是如何解决这个问题的?

© www.soinside.com 2019 - 2024. All rights reserved.