Node之http对象

http建立在TCP协议之上,提供了网络交互的多个api,我根据自己的实践介绍下request和get的用法,这是底层的方法,用express等框架都可以实现

以极速数据api为例,appkey可以去注册申请一个

http.request 

调用方式 node http_request.js 13800000000 

argv 指的是命令行参数

var qs = require('querystring')
var http = require('http')

var tel = process.argv.slice(2).join(' ').trim()

if (!tel.length) {
    console.log('error');
    process.exit()
}

http.request({
    host: 'api.jisuapi.com',
    path: '/shouji/query?' + qs.stringify({appkey: '???', shouji: tel})
}, function (res) {
    var body = ''

    res.setEncoding('utf8');

    res.on('data', function (chunk) {
        body += chunk;
    })

    res.on('end', function () {
        var obj = JSON.parse(body)
        console.log('归属地' + obj.result.city)
        console.log('运营商' + obj.result.company)
    })
}).end()

 

http.get

var qs = require('querystring')
var http = require('http')

var tel = process.argv.slice(2).join(' ').trim()

if (!tel.length) {
    console.log('error');
    process.exit()
}

http.get({
    host: 'api.jisuapi.com',
    path: '/shouji/query?' + qs.stringify({appkey: '???', shouji: tel})
}, function (res) {
    var body = ''

    res.setEncoding('utf8');

    res.on('data', function (chunk) {
        body += chunk;
    })

    res.on('end', function () {
        var obj = JSON.parse(body)
        console.log('归属地' + obj.result.city)
        console.log('运营商' + obj.result.company)
    })
})

http.request和http.get 核心的区别在于end()

最后介绍一个模块 superagent

首先安装 $ npm install superagent 

 

var request = require('superagent')

request.get('http://api.jisuapi.com/shouji/query')
    .query({appkey: '???'})
    .query({shouji: '13800000000'})
    .end(function (err, res) {
        if (res.ok) {
            var obj = JSON.parse(res.text)
            console.log(obj.result.company);
        } else {
            console.log('error ' + res.text);
        }
    })

 

posted on 2017-03-07 17:22  棉花糖_30  阅读(209)  评论(0编辑  收藏  举报

导航