1、commonjs模块化
CommonJS规范规定,每个模块内部, module
变量代表当前模块。这个变量是一个对象,它的 exports
属性(即 module.exports
)是对外的接口。加载某个模块,其实是加载该模块的 module.exports
属性。
环境初始化
npm init -y 在终端中运行该代码后 会生成一个package.json的文件
模块的安装
在使用nodejs时需要一些依赖 我们可以使用 nom install 来安装依赖
npm i ajax -g -g表示全安装
cnpm i ajax --save 简写 -S 表示将依赖添加到package,json中
npm i ajax --save -dev 简写 npm i ajax -D 表示生菜博士
注意点 生成的node_moudeles文件夹不可以删除
2、创建服务器
- 通过require引入引入http
- 通过 http.createServer创建服务 req:requset 请求res:response 响应
- /给服务器创建端口 通过server.listen监听服务器是否启动
//引入http
const http = require("http");
//创建服务
const server = http.createServer((req,res)=>{
//req:requset 请求
//res:response 响应
comst method = req.method
})
//给服务器创建端口
server.listen(8080,()=>{
console.log("服务已经启动")
})
在nodejs中,代码修改后 需要我们手动重启代码,这个时候我们可以安装nodemon包 ,来解决手动重启的问题
3、获取get请求参数
方法一
从req中获取请求相关内容,使用字符串分割的方式,获取fet请求中的内容
const server = http.createServer((req,res)=>{
res.setHeader("content-type","application/json;charset=utf-8")
//从req中获取请求相关内容
const{method,url}=req;
console.log(method);
console.log(url);
if(method==="GET"){
//获取get请求的参数
//解析url
//1 l利用字符串分割方式
const paramsStr=url.split('?')[1];
const paramsArr=paramsStr.split('&');
const query={};
paramsArr.forEach(item=>{
const param=item.split("=");
query[param[0]]=param[1];
});
//使用url中的parse函数
const result = parse(url,true);
req.query=result.query;
console.log("req.query",req.query);
}
});
方法二
需要安装querystring npm i qusrystring -D
const server = http.createServer((req,res)=>{
res.setHeader("content-type","application/json;charset=utf-8")
//从req中获取请求相关内容
const{method,url}=req;
console.log(method);
console.log(url);
if(method==="GET"){
//获取get请求的参数
//解析url
// 2、利用querystring
const paramsStr=url.split("?")[1];
console.log(paramsStr)
//利用querystring.deconde方法进行分割
req.query=querystring.decode(paramsStr,"&","=");
//res.end() 服务器给客户响应
res.end(querystring.encode(req.query,'&','='));
}
});
方法三
const server = http.createServer((req,res)=>{
res.setHeader("content-type","application/json;charset=utf-8")
//从req中获取请求相关内容
const{method,url}=req;
console.log(method);
console.log(url);
if(method==="GET"){
//获取get请求的参数
//解析url
// 创建URLSearchParams对象
const searchParams= new URLSearchParams(paramsStr);
//解析字符串
const keys = searchParams.keys();
for(let key of keys){
query[key]=searchParams.get(key);
}
}
});
方法四
从req中获取请求相关内容,使用url中的parse函数获取参数
const server = http.createServer((req,res)=>{
res.setHeader("content-type","application/json;charset=utf-8")
//从req中获取请求相关内容
const{method,url}=req;
if(method==="GET"){
//使用url中的parse函数
const result = parse(url,true);
req.query=result.query;
console.log("req.query",req.query);
}
});
4、获取post请求的参数
if(method==="POST"){
let postparsms = '';
//设置请求头
const contentType= req.header("content-type");
req.on('data',chunk=>{
postparsms +=chunk;
});
req.on('end',()=>{
if(postparsms = ''){
req.body = JSON.parse(postparsms);
read.end(JSON.stringify({
data:{},
message:"成功"
}))
}else{
read.end(JSON.stringify({
data:req.body,
message:"成功"
}))
}
})
}
5、应用
下面是一个简单的demo,对get post 请求进行练习
//引入http
const http=require ('http');
const{parse} = require('url');
//创建服务器
const server = http.createServer((req,res)=>{
//设置响应头
res.setHeader('content-type', 'application/json;charset=utf-8');
//获取参数
const{url,method}=req;
const obj=parse(url,true); //解析url
req.query=obj.query; //将get请求得到的参数放到query中
//请求地址
const pathName=obj.pathname;
if(method==='GET'&&pathName==='/api/Blogs'){
//获取博客信息
const blogs=[{
id:'1',
title:'aa',
content:'aa的博客'
},{
id:'2',
title:'bb',
content:'bb的博客'
}];
//获取参数
const id=req.query.id;
let arr=blogs;
if(id){
arr=blogs.filter(blog=>blog.id===1);
}
res.end(JSON.stringify({
status:200,
ok:true,
data:arr
}));
}else if(method==='POST'&&pathName==='/api/login'){
let postParams='';
req.on('data',chunk=>{
postParams+=chunk;
});
req.on('end',()=>{
//将post请求的结果放到req.body中
req.body = JSON.parse(postParams)
//登录信息
const {sid,password}=req.body;
if(sid==='admin'&&password==="123456"){
res.end(JSON.stringify({
code:1,
message:"登录成功",
token:'qwer',
}));
}else{
res.end(JSON.stringify({
code:1,
message:"用户密码错误",
token:' '
}));
}
})
}});
server.listen(8081,()=>{
console.log('服务器已经启动')
})
以上就是Nodejs中收取请求参数的几个方法啦