HTTP服务器
http服务器的创建流程
//引入模块
var http = require('http');
// 创建服务
http.createServer(function(req, res) {
//响应头
res.writeHead(200,{
'Content-Type':'text/html;charset=utf-8', //解决中文乱码问题
'Access-Content-Allow-Origin':'*' //解决跨域
});
//响应内容
res.write('<h1>Node.js</h1>');
//结束响应
res.end('<p>will will be well </p> ');
//监听端口
}).listen(3000);
console.log('http server is listening at port 3000');
常规处理客户端请求
处理fetch()发送的get请求
//获取get请求的url参数
let str = req.url;
//根据请求参数对数据,响应请求
//例如返回id = 2的用户的个人信息
let obj = {
username:"zhang3",
pwd:"123456",
tel:"1233435456",
email:"123@a.com"
}
res.write(JSON.stringfy(obj));
res.end(); //服务器响应j结束
注意:get请求方式获取的url有时候可能是中文的,这个时候需要使用var str = encodeURI(url)对url进行转码。
处理post请求
//接收post请求发送的参数
let msg = "";
req.on("data",chuck=>{
msg += chuck; //将接收到数据片段连接起来
}
req.on("end",()=>{
//end表示数据传送结束,测试的msg就是客户端post请求发送到服务器的数据
console.log(msg);
}
//根据接收到的数据响应
res.end(msg);//结束服务器响应,将数据发送到客户端
使用express处理客户端请求
Express是Node.js的一个快速开发框架,非常适合搭配Node使用。首先,需要使用淘宝镜像cnpm命令来安装Express.
Express安装命令:
cnpm install express-generator -g
安装成功以后就可以开始使用了。首先创建一个工作目录,并进入这个目录,创建package.json文件
mkdir myapp
cd myapp
npm init
package.json文件中包含了这个项目工程所需要的依赖包。创建好package.json后,将Express添加到依赖列表中.
npm install express --save
做好以上工作之后,就可以开始使用express来处理服务器请求了。
Express处理服务器get请求
//第一步导入express
var express = require("express");
var app = express();
解决浏览器跨域问题
app.use((req,res,next)=>{
res.header('Access-Control-Allow-Origin','*');
res.header('Access-Control-Allow-Headers','Content-Type');
res.header('Access-Control-Allow-Methods','*');
res.header('Content-Type','application/json;charset=utf-8');
next();
});
//第二步,根据用户发送的请求方法method和请求路径url,做出响应
app.get("/",(req,res)=>{
let data = req.query; //获取get请求参数
//第三步 根据要求获取到响应的数据对象
//第四步 将响应数据发送给页面
res.send(Object);
});
Express处理POST请求
//express 如果要获取body中的值,需要导入bodyParser
let bodyParser = require("body-parser");
//解析x-www-form-url...头部信息(headers)
app.use(bodyParser.urlencoded({extended:false}));
app.post("/",(req,res)=>{
let data = req.body;
//根据数据做出响应
//提交响应数据到客户端
res.send(Object);
})
express快速生成目录
express --view=pug 文件夹名(工程名)
回车后,会产生下面的目录
- bin目录:服务器的启动目录,里面包含了一个启动文件www,默认监听的端口是3000.
- node_modules:这里面安装了所有的依赖模块 public:前端页面的静态资源 html css image js
- routes:路由文件(默认有两个index和users),主要用来接收前端发送的请求,响应数据给前端。所以我们的服务器处理主要就是在这个目录下完成。
- views:主要放置e.js后端模板文件
- app.js:入口文件,分配其他子路由
- package.json:包描述文件
使用快速生成目录来处理服务器请求,主要在routes目录下完成,index.js代表的是根目录。如果添加了新的.js文件,就需要去app.js文件中配置路由。