【nodejs】使用Node.js实现REST Client调用REST API

最近在产品中开发基于REST的API接口,结合自己最近对Node.js的研究,想基于它开发一个REST Client做测试之用。

通过初步研究,Node.js开发HTTP Client还是挺方便的。

选用Node的理由:

1. 使用完全基于JavaScript的Node测试JSON格式的数据,非常之方便

2. Node有很好的社区支持。(现在GitHub上已成了JavaScript最大的开源社区)

By Example:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

varhttp = require('http');

varequal = require('assert').equal;

varusername ='falcon';

varpassword ='';

var_auth ='Basic '+newBuffer(username +':'+ password).toString('base64')

varoptions = {

host:'localhost',

port: 13080,

path:'/SM/7/rest/1.1/incident_list/',

method:'GET',

headers:{

'accept':'*/*',

'content-type':"application/atom+xml",

'accept-encoding':'gzip, deflate',

'accept-language':'en-US,en;q=0.9',

'authorization': _auth,

'user-agent':'nodejs rest client'

}

};

varreq = http.request(options,function(res) {

console.log('STATUS: '+ res.statusCode);

equal(200, res.statusCode);

console.log('HEADERS: '+ JSON.stringify(res.headers));

res.on('data',function(chunk) {

console.log('BODY: '+ chunk);

});

});

req.on('error',function(e) {

console.log('problem with request: '+ e.message);

});

req.end();

将上述代码保存成RestTest.js,然后在命令行上运行: node RestTest.js 就可以看输出的结果了。

上面的代码只是使用Node自带的Assert做Unit Test,如果有兴趣的话,还是引入Jasmine等BDD的测试框架。(待续。。。)