我在数据库中存储了大量文本,可以毫无问题地从我的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
});
如果我访问此路由,则会得到空白页。绝对没有任何东西出现在我的屏幕上,邮递员或curl
。错误日志中没有错误,什么也没有。只是空白。
如果我放置了比大文本小得多的其他内容(例如hello world),则输出响应没有问题。有人可以说明这个问题的根本原因是什么吗?在Lumen / Laravel中响应的字符数有限制吗?
---更新---
因此,如果我做echo response()->json($string)
(其中$string
是一个保存长文本的变量),我可以看到字符串已被编码为JSON并添加了响应标头,而所有这些都是在屏幕上输出。但是,执行return response()->json($string)
仍会继续返回空白响应。
有人会知道为什么return
不发送回response()
的数据吗?
答案 0 :(得分:0)
要使用laravel之类的内腔返回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
答案 1 :(得分:0)
解决了这个问题:我从这里获得的一个CORS中间件类:enter link description here
使用Content-Length
> 6K的响应的长度为0,但仍返回200响应。感谢您对所有人的帮助和建议。