óCoffeeScript Cookbook

最简单的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.gethttp.request的快捷方式。后者允许你使用不同的方法发送HTTP请求,比如说POST或者PUT。

关于这个主题的API或者更为详细的信息,请参考http以及https这两页文档。而且HTTP spec迟早也会用到。

练习

  • 基于Basic HTTP Server,创建一个针对键值对存储的HTTP服务器的客户端。