nodeJS

nodejs基本使用

nodejs的来源及作用

目的:为构建高性能服务器
两种方式:交互模式(可以在命令行执行)和JS文件
是什么: Node.js 就是运行在服务端的 JavaScript,基于V8进行运行 
作用:(1)Node能用来操作系统底层,操作硬件
	 (2)能够用来创建服务器,构建后端接口

nodejs模块

核心模块(nodeJS官网上的都是核心模块)、用户模块、自定义模块
核心模块之http模块
构建服务器
构建流程:
  ① 导入http模块
  ② 使用http模块创建一个服务器-
  ③ 给服务器添加请求处理函数fn-->绑定端口
核心模块之file模块
文件夹操作
    fs.mkdir创建文件夹
    fs.rmdir删除空文件夹(只能删除空文件夹)
    fs.readdir读取文件夹	  
文件操作
     fs.writeFile写入文件(文件不存在就创建文件,存在则写入内容)
     fs.readFile读取文件内容
     fs.appendFile追加文件内容
     fs.unlink删除文件

express

express是一个简洁而灵活的 node.js Web应用框架
核心特性
路由:定义了路由表用于执行不同的 HTTP 请求动作	
		
中间件:	可以设置中间件来响应 HTTP 请求,
其作用:1、对此用户的请求做身份验证   
       2、 对请求做出的参数注入
       3、甚至是最简单的日志打印
                 
jade模板:可以通过向模板传递参数来动态渲染 HTML 页面,
		  创建模板文件,一般用于服务端渲染页面
		  
安装及使用:
    安装express库和生成器
	  	    cnpm/npm i express -g
		    cnpm/npm i express-generator -g(不能漏掉enerator模块)
	构建项目:express  项目名
	跳转到package.json目录下安装相关的包 yarn 或者 cnpm i  或者 npm i
	启动项目: SET DEBUG=mypro1:* & npm start

模块化

在JavaScript而言,模块化有几种规范,如amd,cmd,commonJS,es6的模块化
commonJS:服务器端模块的规范.为同步模块规范

MongoDB

MongoDB是一个由C++ 语言编写的基于分布式文件存储的数据库
与MySQL对比
Mysql等数据库的是类似于Excel表格式的数据,这种表格式的数据库也称之为关系型数据库,表叫做关系表。
MongoDB数据库存储的是类似json格式的数据,称之为bson,这种数据库由于比较自由,数据间并不一定有关系,我们称之为非关系型数据库
MongoDB作用:
	1、数据的高并发读写
	2、数据的海量数据存储
	3、数据的高可扩展性
	4、数据的高可用性

在这里插入图片描述

数据库相关指令:
	查看命令提示:help
	查询数据库: show dbs
	创建/切换数据库: use 数据库名
	显示当前所处数据库:db
	查看MongoDB服务器地址:db.getMongo()
	删除数据库:db.dropDatabase()
collection相关指令
	查看集合show collections 或 show tables 命令
	删除集合 db.collection.drop()
document相关指令
	插入db.collection.insert()
	批量插入db.collection.insertMany()
	查询db.collection.find()
		skip()h和limit()可以实现分页查询
		sort(),1为升序,-1为降序
	查询时格式化db.collection.find().pretty()
	更新db.collection.update()
	db.collection.save(),指定_id,就更新该条数据,不指定则类似于insert()
	删除db.collection.remove()	g)

RestfulAPI 规范

目的:规范的设计接口、提高可用性、降低沟通成本
核心内容
	1、尽量返回JSON,避免使用XML
    2、规定了几种请求方式
		1)GET(SELECT)获取资源
		2)POST(CREATE)创建资源
		3)PUT(UPDATE)更新资源,客户端需要提供新建资源的所有属性
		4)DELETE(DELETE)删除资源
		OPTIONS:获取信息
 3、规定了接口返回数据的结构
		{
			"code": 200,
			"message": "啊哈哈",	
			"succ": true,
			"data": [] 
			}
4、	应该将API的版本号放入URL
		如:https://api.example.com/v1/  
		github就是采用这种做法
5、	规定的一些通用字段
		url?limit=10 # 指定返回记录的数量
		url?offset=10 # 指定返回记录的开始位置
		url?page=2&per_page=100 # 指定第几页,以及每页的记录数
		url?sortby=name&order=asc # 指定返回结果按照哪个属性排序,以及排序顺序
		url?state=close # 指定筛选条件

用户鉴权

常用鉴权方式
	1.HTTP Basic Authentication----http协议本身的身份验证方法
	2.session-cookie----session鉴权方式
	3.Token 验证-------token鉴权方式【目前主要使用的方式】
	4.OAuth(开放授权)---一般用于第三方授权,如你使用微信,支付宝等相关开发
session鉴权
鉴权流程
	1.nodejs后端安装和使用cookie和session中间件(为了实现处理session和token的能力)
	2.当用户登录成功时,后端向req.session中写入数据
	3.当后端返回数据给前端时,会自动生成sessionid,标识当前登录了的这个用户
	4.登陆之后,前端的每一次请求都会自动带上sessid(因为会自动发送cookie)
	5.后端收到前端请求后通过sessionid自动找到session,然后会通过session中存储的用户基本信息来判断用户是否有效
缺点:无法直接支持跨端使用,一般是web端支持
token鉴权
鉴权流程
	1.客户端使用用户名和密码请求登录
	2.服务端收到请求,验证登录是否成功
	3.验证成功后,服务端会返回一个Token给客户端,反之,返回身份验证失败的信息
	4.客户端收到Token后把Token用一种方式存储起来,如(headers/ cookie / localstorage / sessionstorage / 其他 )
	5.客户端每次发起请求时都会将Token发给服务端
	6.服务端收到请求后,验证Token的合法性,合法就返回客户端所需数据,反之,返回验证失败的信息
用途:token是任意端都支持,并且token在服务端的生成方式不一样,一般是由jwt算法实现,验证也是做算法验证
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值