【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:

var http = require('http');
var equal = require('assert').equal;

var username = 'falcon';
var password = '';
var _auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64')

var options = {
	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'
	}
};

var req = 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的測試框架。(待續。。。)

 

生成測報告:

1. Maven Jasmine plugin (SM Client Team已在使用了)

2. Testacular by Google(本博主推薦)

 

P.S.:

如果你是CoffeeScript的Fans可以參考下面的代碼片段

http = require 'http'
equal = require('assert').equal

username = 'falcon'
password = ''
_auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64')

options = 
    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'

req = http.request options, (res) -> 
    console.log('STATUS: ' + res.statusCode)
    equal(200, res.statusCode)
    console.log('HEADERS: ' + JSON.stringify(res.headers))

    res.on 'data', (chunk)-> 
         console.log('BODY: ' + chunk)

    req.on 'error', (e)->
      console.log('problem with request: ' + e.message)

req.end()

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM