xml - hapijs 渲染 xml,如站点地图、提要

标签 xml hapi.js

我在 hapijs 中找不到任何用于渲染 xml 输出的文档,目前我的 View 是这样渲染的:

server.route({
  path: "/feed/{tag}",
  method: "GET",
  handler: function(req, resp) {
    var tag = req.params.tag;
    Post.findByTag(tag).sort({date: -1}).exec()
        .then(function(posts){
            resp.view("feed", {posts: posts, updated: posts[0].date}, {layout: false});
        });
}
});

我的 Handlebars 模板 feed.hbs 是:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>{{ site.siteTitle }}</title>
  <link href="{{site.siteBaseUrl}}"/>
  <author>
    <name>Adam Stokes</name>
  </author>
  <updated>{{updated}}</updated>
  <id>{{site.siteBaseUrl}}</id>
  {{#each posts}}
  <entry>
    <title>{{this.title}}</title>
    <link href="{{site.siteBaseUrl}}/{{this.permalink}}"/>
    <id>{{site.siteBaseUrl}}/{{this.permalink}}</id>
    <updated>{{this.date}}</updated>
    <summary>{{md this.md}}</summary>
  </entry>
  {{/each}}

</feed>

问题:

在浏览器中查看输出不会呈现为正常的 xml 输出,而是呈现为文本。

问题是如何确保输出具有正确的 header 以正确的 xml 格式呈现?

最佳答案

Handlebars 正确呈现 XML,只是您的浏览器将其解释为 HTML,而不是 XML。您只需指明内容类型是 XML:

server.route({
    path: '/feed/{tag}',
    method: "GET",
    handler: function (request, reply) {

        var tag = req.params.tag;
        Post.findByTag(tag).sort({date: -1}).exec()
        .then(function(posts){

            var response = reply.view('feed', {posts: posts, updated: posts[0].date}, {layout: false});
            response.type('application/xml');
        });
    }
});

旁白:

我建议您使用标准参数名称requestreply。您选择的 resp 看起来很像代表一个响应对象,但事实并非如此。这是reply() interface 。回复接口(interface)实际上返回了一个response object (如我的答案所示)其中有设置内容类型等的方法。

关于xml - hapijs 渲染 xml,如站点地图、提要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791177/

相关文章:

java - 将 XML 绑定(bind)到 Java 类时处理不同的 XSD 版本

c# - 通过搜索 'value' 检索元素 'name'

node.js - 如何在 hapi-swagger 文档页面上进行身份验证,以便只有真实用户才能看到我的文档

node.js - 如何输出从 Hapi.js View 生成的 View 编译器错误?

node.js - 访问 Hapi 请求 id 而不到处传递请求对象?

node.js - Catbox-redis 在我的 hapijs 应用程序上显示断开连接错误

xml - 使用 DTD 验证 CDATA 元素时出错 - XML

java - 寻求一些了解 simpleCursorAdapter 工作原理的见解

python - 如何使用 feed 解析器 python 解析 xml feed?

javascript - 我应该创建一个 hapijs 插件还是使用 server.ext 来筛选标题中的 api-key