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. keil条件断点

    http://www.keil.com/support/man/docs/uv4/uv4_db_dbg_breakpnts.htm Target Device does not support con ...

  2. iOS 批量上传图片的 3 种方法

    AFNetworking 在去年年底升级到了 3.0.这个版本更新想必有很多好处,然而让我吃惊的是,它并没有 batch request 接口.之前的 1.x 版本.2.x 版本都实现了这个很常见的需 ...

  3. Eclipse之Cannot open Eclipse Marketplace

    今天给eclipse安装插件的时候出现各种cannot connect to...的问题, 想打开eclipse marketplace来安装插件出现Cannot open Eclipse Marke ...

  4. list.Except()

    差集 List<string> list = new List<string>() { ", ", ", }; List<string> ...

  5. 搜索控制器UISearchController的使用

    说明:本文主要是将系统UISearchController控件声明文件中的属性.方法.代理等介绍下,后续再联合[搜索栏UISearchBar]这篇文章一起更新更实用的信息. 1.初始化 // 如果设置 ...

  6. NSNotFound

    1.在数组或者字典中查找元素时,没有查到系统用NSNotFound表示.比如下面例子,应该养成这种编程习惯,可以减少因为’超标’而闪退的情况. if ([self.departmentNameArra ...

  7. vh搭配vw进行响应式布局

    1.浏览器兼容性: IE8-不支持,IOS7.1-不支持,android4.3-不支持 2. vh代表浏览器视口高度(100vh等于当前浏览器的整个高度) 3.vw代表浏览器视口的宽度 (100vw等 ...

  8. map的查询和修改方法

    1:map查询的方法 package com.cn.util; import java.util.ArrayList; import java.util.HashMap; import java.ut ...

  9. 《算法图解》[美] Aditya Bhargava(作者)epub+mobi

    内容简介 本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量.书中的前三章将帮助你打下基础,带你学习二分查找.大O表示法.两种基本的数据结构以及递归 ...

  10. 「USACO5.4」奶牛的电信Telecowmunication

    传送门 Luogu 解题思路 题目要求的是最小割点集,考虑用最小割来做. 所有边容量为1,直接求最小割? 这样肯定会出错,比如这种情况: 从最左边的点到最右边的点的最小割为2,但是答案是1,只要破坏中 ...