最简单的HTTP客户端
问题
你想创建一个HTTP客户端
方法
在本菜谱中,我们将使用node.js的HTTP库。我们先从一个简单的GET请求示例开始,然后实现可以返回电脑真实IP的客户端。
GET些啥
http = require 'http'
http.get { host: 'www.google.com' }, (res) ->
console.log res.statusCode
get
函数是node.js的http
模块提供,可以向HTTP服务器发送一个GET请求。响应会以回调的形式返回,我们可以在一个函数中处理它。本例只是简单地把响应的状态码打印出来。请看:
$ coffee http-client.coffee
200
我的IP地址是多杀?
如果你处在一个像LAN这样的网络中,依赖于NAT,你有时候可能会碰到这样的问题,我真实的IP地址是多少呢?让我编写一小段coffeescript来搞定它:
http = require 'http'
http.get { host: 'checkip.dyndns.org' }, (res) ->
data = ''
res.on 'data', (chunk) ->
data += chunk.toString()
res.on 'end', () ->
console.log data.match(/([0-9]+\.){3}[0-9]+/)[0]
我们可以监听'data'
事件,从返回的对象中获取数据;并且当'end'
事件触发时,我们可以知道数据传送完了。当传送结束时,我们可以使用一个简单的正则表达式来匹配出我们的IP地址,试试看:
$ coffee http-client.coffee
123.123.123.123
详解
要知道http.get
是http.request
的快捷方式。后者允许你使用不同的方法发送HTTP请求,比如说POST或者PUT。
关于这个主题的API或者更为详细的信息,请参考http以及https这两页文档。而且HTTP spec迟早也会用到。
练习
- 基于Basic HTTP Server,创建一个针对键值对存储的HTTP服务器的客户端。