为co-body增长xml等文本类型的支持

co-body是TJ大牛编写的使用Generator解析表单的模块。git

当前co-body仅显示支持:application/jsonapplication/x-www-form-urlencodedtext/plain,而有时候咱们须要接收xml格式的数据(其类型为text/xml),能够经过以下方式增长其对xml的支持:github

  • 在lib目录下复制json.js文件一份,更名为textxml.js,修改try{ done(null, JSON.parse(str); }try{ done(null, str); },即不作任何解析,直接保存。
  • 修改根目录下的any.js,增长var text = require('./textxml');并在exports函数中的json解析逻辑后增长这样一句if ('text/xml' == type) return text(req, opts);要支持其余文本类型,稍做修改便可。
  • 修改根目录下的index.js,增长exports.text = require('./lib/textxml');,以供其余程序调用。

在使用koa-body等包含co-body的工具中,要支持xml格式,可能还须要进一步修改。json

koa-body为例,修改其根目录下的index.js文件的function requestbody,在合适位置增长以下内容:服务器

<!-- lang: js -->
else if (this.is('text/xml'))  { // 返回对应的Content-Type,若无效,为false
  body = yield buddy.text(this, {encoding: opts.encoding, limit: opts.jsonLimit});
}

这样,xml字符串将以纯文本的形式完整的接收,以便进一步处理。微信

此场景适用于微信服务器的推送消息。app

转载请注明出处:http://my.oschina.net/u/2324376/blog/392975koa

相关文章
相关标签/搜索