Laravel 响应:返回 xml 1 个改进

问题

如何在控制器或路由中返回 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-Typetext/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-Typetext/xml 即可:

Route::get('/xml', function () {
    return response()
        ->view('xml')
        ->header('Content-Type', 'text/xml');
});

当然啦,Laravel 社区也有相应的包可供我们使用:

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!