Laravel 响应:返回 xml
问题
如何在控制器或路由中返回 XML 格式的内容响应?
回答
在 Laravel 中,想在控制器或路由中返回 XML 格式的响应内容是非常简单的,下面是示例代码:
Route::get('/xml', function () {
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><websites></websites>');
$website = $xml->addChild('website');
$website->addChild('url', 'https://learnku.com');
$website->addChild('desc', 'LearnKu 是终身学习者的编程知识社区');
$content = $xml->asXML();
return response($content)->header('Content-Type', 'text/xml');
});
与标准的 HTML 内容不同之处在于用 header
方法设置下标头 Content-Type
为 text/xml
就可以了。
想用视图文件?没问题!让我们在 resources\views
目录中创建一个 xml.blade.php
文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<websites>
<website>
<url>https://learnku.com</url>
<desc>LearnKu 是终身学习者的编程知识社区</desc>
</website>
</websites>
然后象返回普通的视图文件那样,用 view
方法指明它,用 header
方法设置响应标头 Content-Type
为 text/xml
即可:
Route::get('/xml', function () {
return response()
->view('xml')
->header('Content-Type', 'text/xml');
});
当然啦,Laravel 社区也有相应的包可供我们使用: