zoukankan      html  css  js  c++  java
  • 【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()
  • 相关阅读:
    夜神模拟器连接电脑
    Appium+python 多设备自动化测试
    appium+python 连接手机设备的yaml配置文件
    appium+python自动化测试连接设备
    Ansible 学习目录
    Python 时间处理
    获取本机网卡ip地址
    Ansible playbook 使用
    ansible hosts配置
    python os和sys模块使用
  • 原文地址:https://www.cnblogs.com/buhaiqing/p/2990823.html
Copyright © 2011-2022 走看看