大家好。我开始编写一个 API(研究项目),然后出现了一个想法,以便用户根据设置可以接收 XML 格式或 JSON 格式的数据。默认情况下,Laravel 以 JSON 格式返回,但我向用户数据库添加了一个标志 - “response_format”,我希望结果以所需的格式返回到数据库中,具体取决于该字段的状态,即 如果存在值“xml”,则服务器响应格式从 json 更改为 xml ...我想知道是否可以制定某种通用选项,例如通过中间件,以便此规则一次应用于多组路线?
我试图在中间件中实现它,通过向数据库发出请求,“find($req)”搜索用户的响应状态字段,但结果实现只是错误,如果一切正常,那么中间件返回 $next($request) ,并且这已经在控制器中,结果再次证明您需要寻找用户,检查他的响应类型并以正确的格式返回它......也许有一种更简单的方法来指定它统治某个地方的某个地方?
使用:mtownsend/response-xml 包。
PS:我刚刚学习,我希望我能清楚地表述问题和解释......
您需要创建中间件,将其放入别名的中间件列表中,并放在最后的优先级列表中。
在中间件的句柄内,检查响应的格式,如果是 xml,则提取响应并将其转换为 XML:
好吧,最后,你在必要的路线上开出它。
感谢你的回答!我需要的,只是我修改了一点(我不知道是否正确,也许你不应该这样做,如果有的话,纠正它)。
总的来说,我在 getData() 上遇到了错误,json_decode 出现了其他一些问题,getOriginalContent() 也被下划线了,但一切正常,我查看了 dd($response) 调试并修改了代码如下,一切开始工作。