node作为服务器更多的是web服务器

1.http模块

首先:http是一个协议。里面有通信机制,状态码一大堆乱七八糟的东西。自己写猴年马月都写不出来,node通过这个http这个对象帮我们集成。直接用

服务器对象: http.createSever()【快速搭建一个服务器,集成好】

let http = require('http')

http.createServer(() => {
content
}).listen(8088)
//当访问localhost:8088 content就会输出到服务器
let http = require('http')
let fs = require('fs')
http.createServer((request, response) => {
console.log(request.url)
fs.readFile(`./${request.url}`, (err, data) => {
if (err) { } else {
response.end(data)
}
})
}).listen(8088)
//当访问localhost:8088 content就会输出到服务器
let http = require('http')
let fs = require('fs')
http.createServer((request, response) => {
console.log(request.url)
fs.readFile(`./${request.url}`, (err, data) => {
if (err) {
response.writeHead(404)
response.end('data')
} else {
response.writeHead(200) //这行可不写,默认
response.end(data)
}
})
}).listen(8088)
//当访问localhost:8088 content就会输出到服务器

2.Node中的数据交互

头部:信息 不能大于32k (url 浏览器版本 内核)

身体:数据 不能大于2g(超过只能用插件)

get请求方法

1.主要用于获取数据

2.数据是放在url里进行传输的

let http = require('http')
let fs = require('fs')
http.createServer((request, response) => {
console.log(request.url)
let [path, query] = request.url.split('?')
console.log(path, query)
}).listen(8088)
//当访问localhost:8088 content就会输出到服务器 //html文件
<form action="http://localhost:8088/1.html" method="get"> action数据提交的地址
用户名<br><input type="text" name="username">
密码<br><input type="text" name="password">
<br><input type="submit">
</form> //使用新模块
let http = require('http')
let fs = require('fs')
let url = require('url')
http.createServer((request, response) => {
console.log(url.parse(request.url, true))
}).listen(8088)
//当访问localhost:8088 content就会输出到服务器

GET请求

参数放在url中 放在头部

数据比较小(一次就传输了)

POST请求

数据放在body里面传输

数据比较大(一段一段传输,一般传输的是二进制 buffer)

也可以放在url中

let http = require('http')
let fs = require('fs')
let url = require('url')
http.createServer((request, response) => {
let result = []
request.on('data',(buffer) => {
result.push(buffer)
}) //data事件,每发送一段data数据,就执行一次data事件。on比较像绑定
request.on('end', () => {
var data = Buffer.concat(result)
console.log(data, result) // 因为我们需要的是一个buffer数据格式
})
}).listen(8088)
//引入字符串切片工具
let http = require('http')
let fs = require('fs')
let querystring = require('querystring')
let url = require('url')
http.createServer((request, response) => {
let result = []
request.on('data',(buffer) => {
result.push(buffer)
}) //data事件,每发送一段data数据,就执行一次data事件。on比较像绑定
request.on('end', () => {
var data = Buffer.concat(result).toString()
console.log(querystring.parse(data)) // 因为我们需要的是一个buffer数据格式
})
}).listen(8088)

上面例子只阐述字符串的转译

总结(数据通信)

1.get 特性

  • url中 ?后面
  • < 32k(http协议规定的)
  • url模块(帮我们处理url)  url.parse(req.url  true) true帮我们转化json

2.post特性

  • 放在body里面
  • 数据大 2G
  • querystring模块  (处理数据)
    querystring.parse(data)

案例

什么是接口:不同功能层之间的通信规则称为接口

参数:

返回值

接口设计

‘/login’ 接口地址(登陆接口)

username,password(前端提供)

get

/reg

post

返回值

{
err:1
mas:''" //错误信息
}//前端希望看到的返回值json

接口文档:接口如何使用

node核心 http模块的更多相关文章

  1. Node核心模块

    在Node中,模块主要分两大类:核心模块和文件模块.核心模块部分在 Node 源代码的编译过程中,编译进了二进制执行文件.在 Node 进启动时,部分核心模块就被直接加载进内存中,所以这部分核心模块引 ...

  2. node.js 核心http模块,起一个服务器,返回一个页面

    let http=require("http"); //引入核心http模块 let fs=require("fs"); let mime={ '.js':'a ...

  3. Node.js面试题:侧重后端应用与对Node核心的理解

    Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. node开发技能图解 node 事件循环机制 起 ...

  4. 《Node.js高级编程》之Node 核心API基础

    Node 核心API基础 第三章 加载模块 第四章 应用缓冲区 第五章 事件发射器模式简化事件绑定 第六章 使用定时器制定函数执行计划 第三章 加载模块 本章提要 加载模块 创建模块 使用node_m ...

  5. node.js面试题大全-侧重后端应用与对Node核心的理解

    Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. github地址: https://github ...

  6. Node入门教程(12)第十章:Node的HTTP模块

    Ryan Dahl开发node的初衷就是:把Nginx非阻塞IO功能和一个高度封装的WEB服务器结合在一起的东东.所以Node初衷就是为了高性能的Web服务器去的,所以:Node的HTTP模块也是核心 ...

  7. Node学习HTTP模块(HTTP 服务器与客户端)

    Node学习HTTP模块(HTTP 服务器与客户端) Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基 ...

  8. Node.js之模块机制

    > 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. ![file](https://img2018.cnblogs.com/blog/830272/20 ...

  9. Node解析之----模块机制篇

    开篇前,我们先来看张图, 看node与W3C组织.CommonJS组织.ECMAScript之间的关系. Node借鉴来CommonJS的Modules规范实现了一套非常易用的模块系统,NPM对Pac ...

随机推荐

  1. centso7设置防火墙

    CentOS 7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 1.直接关闭防火墙 1 2 3 systemctl stop firewalld.service #停止f ...

  2. Linux centos7 Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法

    一. Linux网络相关 yum install net-tools ifconfig查看网卡ip ifup ens33开启网卡 ifdown ens33关闭网卡 设定虚拟网卡ens33:0 mii- ...

  3. Tomcat的部署、虚拟主机及优化

    Tomcat的部署.虚拟主机及优化 文章目录 Tomcat的部署.虚拟主机及优化 前言 1.Tomcat的名称由来 2.Apache Tomcat 5-7版本差异 2.1Apache Tomcat5. ...

  4. mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host问题的解决

    这个原因是因为索要链接的mysql数据库只允许其所在的服务器连接,需要在mysql服务器上设置一下允许的ip权限,如下: 1.连接mysql mysql -u root -p 1 如图: 2.授权 g ...

  5. 字符串NSString与NSMutableString常用方法

    NSString 1.初始化 NSString *str1 = @"a OC Program"; 2.初始化 NSString *str2 = [[NSString alloc] ...

  6. 认识iOS系统架构

    关于本文: 文章主要介绍iOS系统架构中的四层结构的内容.常用的框架.大致的功能,然后对iOS开发人员的发展提出自己的一些拙见. 一.iOS系统是基于UNIX系统,所有从系统稳定性上来说的确比其他操作 ...

  7. 从数据库中查询所有表及所有字段的SQL语句

    从数据库中查询所有表及所有字段的SQL语句 由于一个小项目的需要,近日完成一个从数据库中查询所有表及所有字段的方法,其实用两条SQL语句就可以完成. Sql Server版:列出当前DB中所有表:se ...

  8. 微信小程序中,如何实现显示,隐藏密码的功能

    最近在搞小程序的开发,遇到隐藏,显示密码的功能的时候,电脑上调试没问题,但是手机上面点击却没有效果,必须要跳转到其他页面再跳回来,才能正常显示. 一时间搞得我很头疼,查找资料后,终于知道了是什么原因. ...

  9. SDL 显示汉字

    #include "stdafx.h" #pragma comment(lib,"SDL.lib") #pragma comment(lib,"SDL ...

  10. Spark教程——(6)Spark-shell基于Phoenix访问HBase数据

    package statistics import common.util.timeUtil import org.apache.spark.{SparkConf, SparkContext} imp ...