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

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

当前co-body仅显示支持:application/jsonapplication/x-www-form-urlencodedtext/plain,而有时候我们需要接收xml格式的数据(其类型为text/xml),可以通过如下方式增加其对xml的支持:

  • 在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格式,可能还需要进一步修改。

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字符串将以纯文本的形式完整的接收,以便进一步处理。

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

时间: 2024-10-08 02:31:06

为co-body增加xml等文本类型的支持的相关文章

XML文档类型定义---XML Schema结构

5.1 Schema概述 XML Schema是2001年5月正式发布的W3C的推荐标准,经过数年的大规模讨论和开发如今终于尘埃落定,成为全球公认的XML环境下首选的数据建模工具. 使用DTD虽然带来较大的方便,但是,DTD存在一些缺陷:一是它用不同于XML的语言编写,需要不同的分析器技术.这增加了工具开发商的负担,降低了软件瘦身的可能性,此外开发人员需要多学一门语言及其语法.而XML Schema是按标准XML规则编写的,更容易掌握.二是DTD不支持名称空间.随着大部分的数据处理日益以XML为

Ajax返回值之XML、json类型

Ajax返回值之XML.json类型 2015-01-29 ? 注意:Ajax默认是不能跨域的,在最新的2.0里是可以跨域,但是需要对方应答. ? Ajax返回值之XML类型 <HTML代码> <html> ????<head> ????????<title>Ajax返回return</title> ????<script> function?createXHR(){ ????var?xhr?=?null; ????if(window

HTML5每日一练之input新增加的六种时间类型应用

今天介绍一下input在HTML5中新增加的时间类型的应用,与昨天的练习一样,如果在以下这几种输入框中输入的格式不正确,也是无法提交的. 注意:此种类型的input在Opera10+中效果为佳,Chrome中效果不是十分好,外观取决于浏览器 1.Date类型: <form> <input id="w3cfuns_date" name="w3cfuns.com" type="date"/> <input type=&q

robotframework自动化系列:文本类型的下拉框

对于下拉框定位和输入,这里主要遇到有两种类型的下拉选择. 其中一个类型是select-options格式,如图 这种方式的定位可以使用select from list by value或select from list by list或select from list等格式进行选择定位,具体可以参考随机下拉框定位选择. 而这里主要说的就是这种文本框类型的下拉选择,格式如图所示 此种文本框类型的下拉选择操作方法: 鼠标定位到设备此文本类型下拉框中 文本框中输入设备的首字母这里以0为例, 输入字母后

【VS技巧】根据XML自动生成类型

.NET 4.5对应的VS版本(不要问我哪个版本)中新增了一个功能,严重实用,可以根据XML文档生成新类型.这个功能在VS的[编辑]>[选择性粘贴]菜单中.怎么玩?不急,咱们实际操作一下. 以网易新闻中心的RSS源为例,URI必须指向XML文档,我选用了“文化资讯”频道的内容来测试,URI如下: http://book.163.com/special/0092451H/rss_whzx.xml 在浏览器地址栏中输入以上URI,然后打开该RSS源,然后查看源.按全选选中整个XML文档. 然后回到V

JPQL设置自增长、只读、文本类型等的注解

JAVA中使用JPQL 一种设置id自动生成,自增长的方法 private long id; @Id @GeneratedValue(generator="_native") @GenericGenerator(name="_native",strategy="native") public long getId() { return id; } 也有一种这样的 @Id @GeneratedValue(strategy = GenerationT

php 修改、增加xml结点属性的实现代码

php修改xml结点属性,增加xml结点属性的代码,有需要的朋友可以参考下 php 修改 增加xml结点属性的代码,供大家学习参考.php修改xml结点属性,增加xml结点属性的代码,有需要的朋友,参考下. 1.xml文件 复制代码代码如下: <?xml version="1.0" encoding="UTF-8" ?> <clientSet> <server url="192.168.0.180" port=&qu

JDBC系列:(8)JDBC中大文本类型的处理

文本+二进制 Oracle数据库 MySQL数据库 长文本类型 Clob Text 二进制类型 Blob Blob CREATE TABLE T_BigData(      Id INT PRIMARY KEY AUTO_INCREMENT,      Content LONGTEXT,      BitData LONGBLOB ); 1.保存大文本数据类型(写longtext) package com.rk.db.h_longtext; import java.io.File; import

jdbc java数据库连接 11)中大文本类型的处理

1. Jdbc中大文本类型的处理 Oracle中大文本数据类型, Clob    长文本类型   (MySQL中不支持,使用的是text) Blob    二进制类型 MySQL数据库, Text    长文本类型 Blob    二进制类型 需求: jdbc中操作长文本数据. 设计: 测试表 编码: 保存大文本数据类型 读取大文本数据类型 保存二进制数据 读取二进制数据 MYSQL: 1 -- 测试大数据类型 2 CREATE TABLE test( 3 id INT PRIMARY KEY