1. //Node.js标准库提供了http模块,其中封装了一个高效的http服务器和一个简易的http客户端
  2. //http.Server是一个基于事件的HTTP服务器,它的核心由Node.js下层c++部分实现,而接口由//Javascript封装,兼顾了高性能与简易性
  3.  
  4. //http服务器
  5. var http = require('http');
  6. http.createServer(function(req,res){
  7. res.writeHead(200,{'Content-Type','text/html'});
  8. res.write('<h1>hello node</h1>');
  9. res.end();
  10. }).listen(3000);
  11.  
  12. //这段代码中http.createServer创建了一个http.Server的实例;
  13. //req(request):请求,res(response):响应
  14. //响应代码200,表示成功;
  15. //指定相应头为{'Content-Type','text/html'};
  16. //然后写入相应体
  17. //最后通过res.end();结束响应并发送
  18. //listen()函数,启动服务器并且监听3000端口
  19.  
  20. //Event.Emitter提供了以下几个事件
  21. //request:当客户端请求到来时,该事件被触发,提供2个参数req和res,分别是http.ServerRequest和http.ServerResponse的实例,表示请求和响应信息
  22. //connection:当TCP连接建立时该事件被触发,提供一个参数socket为net.Socket的实例,connection的粒度要大于request,因为客户端在keep-alive下可能会在同
  23. //一连接内发送多次请求
  24. //close:当服务器关闭时触发,注意不是用户断开连接时
  25.  
  26. //http.ServerRequest();是http请求的信息,一般由http.request发送
  27. //由于请求体可能相对较长,需要一定的时间传输,因此http.ServerRequest()提供了3个事件用于控制请求体传输
  28. //data:当请求体到来时触发,该事件提供一个参数chunk,表示接受到的数据,如果该事件没有被监听,那么请求体将会被抛弃,该事件可能会被调用多次
  29. //end:当请体求传输数据完成时,该事件被触发,此后将不会有数据到来
  30. //close:用户当前请求结束时,该事件被触发,不同于end,用户强制中终止了传输,也还是调用close
  31.  
  32. //http.ServerRequest的属性
  33. //complete 客户端请求是否已经发送完成
  34. //httpVersion http协议版本,通常是1.0或1.1
  35. //method 如:GET,POST,PUT,DELETE等
  36. //url 原始的请求路径,例如/static/image/x.jpg或/user?name=smile
  37. //headers http请求头
  38. //trailers http请求尾(不常见)
  39. //connection 当前http连接套接字,为net.Socket的实例
  40. //socket connection的别名
  41. //client client属性的别名
  42.  
  43. //querystring
  44. //querystring.parse && querystring.stringify
  45. //用法和Json.parse,Json.stringify几乎相同
  46.  
  47. @querystring.parse;
  48. var str = 'name=smile&age=20&sex=male';
  49.  
  50. console.log(querystring.parse(str));
  51.  
  52. //{name:smile,age:20,sex:male};
  53.  
  54. @querystring.stringify
  55. var querystring = require('querystring');
  56.  
  57. var str = {name:'smile',parents:['zq','wry'],age:21};
  58. console.log(querystring.stringify(str));
  59.  
  60. //name=smile&parents=zq&parents=wry&age=21;
  61.  
  62. //获取get请求内容
  63. var url = require('url');
  64.  
  65. //ex:
  66. //http://127.0.0.1:3000/user?name=smile
  67. // search: '?name=smile'
  68. // query: { name: 'smile' }
  69. // pathname: '/user'
  70. // path: '/user?name=smile'
  71. // href: '/user?name=smile' }
  72.  
  73. //其中query就是我们所谓的get请求,
  74. //通过url.parse将原始的path解析为一个对象
  75. //路径是pathname
  76.  
  77. //获取post请求内容

node学习笔记(四)的更多相关文章

  1. Java IO学习笔记四:Socket基础

    作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...

  2. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  3. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  4. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  5. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  6. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  8. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  9. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

随机推荐

  1. Delphi 获取临时数据集 ClientDataSet

    function GetcdsAccountsData: OleVariant; var ASQLQuery: TSQLQuery; Adsp: TProvider; begin ASQLQuery: ...

  2. Google V8编程详解(三)Handle & HandleScope

    上一章简单的演示了一个Helloworld Demo.里面涉及到了V8的一些基本类型和概念,本章将围绕这个Demo对V8的基本类型和相关概念进行讲解. 这里还是先把Demo贴出来便于后面分析: #in ...

  3. 修改server 2008远程桌面端口

    在“开始”-"运行"菜单里,输入regedit HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Serve ...

  4. C#窗体技巧

    //限制文本框只能输入数字且允许按退格键删除数字,其它键盘输入不予显示private void 文本框名_KeyPress(object sender, KeyPressEventArgs e)  { ...

  5. 批量执行SQL语句,进行删除,插入或者更改。

    private bool ExecuteTransaction(List<string> list) { using (SqlConnection connection = new Sql ...

  6. js中的一些容易混淆的方法!

    数组的一些方法: 1.join()和split()方法  与之相反的是split()方法:用于把一个字符串分割成字符串数组.  注意返回的数组中不包括separator本身: 提示和注释注释:如果把空 ...

  7. 关于AJAX

    Ajax(异步JavaScript和XML) ajax主要用于异步加载页面,可以使用户在不刷新页面的情况下进行更新. ajax的主要优势是对页面的请求以异步的方式发送到服务器.而服务器不会再用整个页面 ...

  8. linux driver编译环境搭建和命令

    首先将ubuntu14.04的内核升级到内核3.18.12. 其次,Ubuntu14.04上驱动编译命令 $ sudo make -C ~/linux-3.18.12/ M=`pwd` modules ...

  9. python模拟登陆知乎并爬取数据

    一些废话 看了一眼上一篇日志的时间 已然是5个月前的事情了 不禁感叹光阴荏苒其实就是我懒 几周前心血来潮想到用爬虫爬些东西 于是先后先重写了以前写过的求绩点代码 爬了草榴贴图,妹子图网,后来想爬婚恋网 ...

  10. 让padding、border等不占据宽度

    box-sizing:border-box; -moz-box-sizing:border-box; /* Firefox */ -webkit-box-sizing:border-box; /* S ...