我在我的数据库中存储了大量的文本,可以成功地从我的DB
,dd()
it和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()
发回数据吗?
2条答案
按热度按时间azpvetkf1#
要像laravel那样使用lumen返回json响应,我想你可以看看:
https://lumen.laravel.com/docs/5.7/responses
json方法将自动将Content-Type头设置为application/json,并使用json_encode将给定数组转换为JSON
另外,如果你有一个与你的数据库相关联的Model,你可以自动将你的json转换为数组,请参阅:
如果您的数据库具有包含序列化JSON的JSON或TEXT字段类型,则将数组转换添加到该属性将自动将该属性转换为PHP数组
https://laravel.com/docs/5.7/eloquent-mutators#array-and-json-casting
nkhmeac62#
解决了这个问题:一个我从这里学到的CORS中间件类:enter link description here
Content-Length
> 6K的响应被操作为长度为0,但仍然返回200响应。感谢所有人的帮助和建议。