node核心 http模块
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模块的更多相关文章
- Node核心模块
在Node中,模块主要分两大类:核心模块和文件模块.核心模块部分在 Node 源代码的编译过程中,编译进了二进制执行文件.在 Node 进启动时,部分核心模块就被直接加载进内存中,所以这部分核心模块引 ...
- node.js 核心http模块,起一个服务器,返回一个页面
let http=require("http"); //引入核心http模块 let fs=require("fs"); let mime={ '.js':'a ...
- Node.js面试题:侧重后端应用与对Node核心的理解
Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. node开发技能图解 node 事件循环机制 起 ...
- 《Node.js高级编程》之Node 核心API基础
Node 核心API基础 第三章 加载模块 第四章 应用缓冲区 第五章 事件发射器模式简化事件绑定 第六章 使用定时器制定函数执行计划 第三章 加载模块 本章提要 加载模块 创建模块 使用node_m ...
- node.js面试题大全-侧重后端应用与对Node核心的理解
Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. github地址: https://github ...
- Node入门教程(12)第十章:Node的HTTP模块
Ryan Dahl开发node的初衷就是:把Nginx非阻塞IO功能和一个高度封装的WEB服务器结合在一起的东东.所以Node初衷就是为了高性能的Web服务器去的,所以:Node的HTTP模块也是核心 ...
- Node学习HTTP模块(HTTP 服务器与客户端)
Node学习HTTP模块(HTTP 服务器与客户端) Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基 ...
- Node.js之模块机制
> 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 
题意: 输入一个正整数N(<=100000)和C(C属于{1,2,3}),接下来输入N行,每行包括学生的六位学号(习惯用string输入,因为可能有前导零),名字和成绩(正整数).输出排序后的信 ...
- Locale
1. Locale 概述 2. Windows 区域设置 3 Linux Locale 3.1 Linux Locale 语言环境名称格式 3.2 常用区域描述(简写)日期习惯 3.3 日期显示格式 ...
- 引入CSS的方式、link和@import的区别
引入CSS的方式有四种:内联方式.嵌入方式.链接方式.导入方式. 内联方式 内联方式指的是直接在 HTML 标签中的 style 属性中添加 CSS. <div style="back ...
- js中的arguments、Array.prototype.slice.call()
类数组对象:arguments js把传入到这个函数的全部参数存储在arguments里面,其实arguments也是个对象,而且是一个特殊的对象,它的属性名是按照传入参数的序列来的,第1个参数的属性 ...
- Django 学习之用户认证组件auth与User对象
一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个. 1 .authenticate() ...
- 单页面应用程序(SPA)的优缺点
我们通常所说的单页面应用程序通常通过前端框架(angular.react.vue)进行开发,单页面应用程序将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML.JavaScr ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:清除浮动
<!DOCTYPE html> <html> <head> <title>Bootstrap .clearfix 实例</title> &l ...
- 「SCOI2009」windy数
传送门 Luogu 解题思路 数位 \(\text{DP}\) 设状态 \(dp[now][las][0/1][0/1]\) 表示当前 \(\text{DP}\) 到第 \(i\) 位,前一个数是 \ ...
- NLP之gensim
一. 利用 jieba 进行分词,关键词提取 利用gensim下面的corpora,models,similarities 进行语料库建立,模型tfidf算法,稀疏矩阵相似度分析 # -*- codi ...
- 物联网学习笔记——构建RESTFul平台1
0.前言 前些时间顺着Yeelink学习了RESTFUL,使用PHP和Slim框架尝试实现简单的REST API,树莓派可通过GET方法获得JSON数据包,通过这种方式实现了树莓派和服务器(我 ...