先前一直比较关注前端的东西,对后端了解较少。不过一直对Node.js比较感兴趣,去年12月还去参加了阿里的CNODE交流聚会。
以后希望通过这里的博客分享一些学习Node.js的笔记。一方面总结了自己的学习心得,另一方面也可以和大家一起分享交流。
嗯,大概就是这样子。
这篇就先介绍一个Node.js的模块——request。有了这个模块,http请求变的超简单。
使用超简单
Request使用超简单,同时支持https和重定向。
流
任何响应都可以输出到文件流。
反过来,也可以将文件传给PUT或POST请求。未提供header的情况下,会检测文件后缀名,在PUT请求中设置相应的content-type。
请求也可以pipe给自己。这种情况下会保留原content-type和content-length。
表单
request支持application/x-www-form-urlencoded和multipart/form-data实现表单上传。
x-www-form-urlencoded很简单:
或者:
使用multipart/form-data不用操心设置header之类的琐事,request会帮你解决。
HTTP认证
或
sendImmediately,默认为真,发送一个基本的认证header。设为false之后,收到401会重试(服务器的401响应必须包含WWW-Authenticate指定认证方法)。
sendImmediately为真时支持Digest认证。
OAuth登录
定制HTTP header
User-Agent之类可以在options对象中设置。在下面的例子中,我们调用github API找出某仓库的收藏数和派生数。我们使用了定制的User-Agent和https.
cookies
默认情况下,cookies是禁用的。在defaults或options将jar设为true,使后续的请求都使用cookie.
通过创建request.jar()的新实例,可以使用定制的cookie,而不是request全局的cookie jar。
或者
注意,setCookie至少需要三个参数,最后一个是回调函数。
项目主页
request的GitHub主页