搭建webserver以及使用get与post方法
安装express模块
配置好npm的前提下输入命令在本地安装express
模块
npm install express --save
编写服务端代码webserver.js
设置监听端口
我使用的是6080端口进行监听
var express = require("express");
var path = require("path");
var app = express();
app.use(express.static(path.join(process.cwd(),"www")));//wwww为本地映射的文件名,可以自定义命名
app.listen(6080);
设置跨域访问
app.all('*',function(req,res,next){
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Headers","X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered","3.2.1");
res.header("Content-Type","application/json;charset=utf-8");
next();
});
get()方法
app.get(path,callback)
方法,path
为当出现该请求时就会调用callback,get()
方法用于获取客户端发送请求的参数,通过request.query
就可以知道客户端发来的参数
app.get("/login",function(request,response){
console.log("get coming");
console.log(request.query);
response.send("success");
});
post()方法
app.post(path,callback)
方法,与get()
类似,可以通过request.qurey
可以知道上传的数据信息,用于文件上传方面,例:
app.post("/upload",function(request,response){
console.log("post coming");
console.log(request.query);
request.on("data",function(data){
console.log(data.toString());
response.send("upload");
});
});
编写测试服务端的代码http_client.js
引入http模块
var http = require("http");
用于测试get()
方法的function
options
为一个信息表,当调用http.request()
时就会自动发送请求然后就能在服务端上监听到对应method
的请求,比如GET
请求,在request()
的callback在请求时会接收到一个参数带有请求信息,比如状态码、响应头、
function http_get(ip,port,url,params,callback){
var options = {
host: ip,
port: port,
path: url + "?" + params,
method: "GET"
};
console.log(options);
var req = http.request(options,function(incomming_msg){
console.log("respones status:" + incomming_msg.statusCode);
incomming_msg.on("data",function(data){
if(incomming_msg.statusCode === 200){
callback(true,data);
}
});
});
req.end();
}
http_get("127.0.0.1",6080,"/login", "uname=zhang&upwd=123",function(is_ok,data){
if(is_ok){
console.log(data.toString());
console.log("##### get get get ####");
}); //调用方法测试
测试post()方法的function
和测试get()
方法类似,不过需要添加一个headers
用于描述上传文件类型信息,即是Content-Type
,通过对照表对着填就行了,下面是借用链接
对照表
function http_post(ip,port,url,params,body,callback){
var options = {
host:"127.0.0.1",
port:6080,
path:url + "?" + params,
method: "POST",
headers:{
"Content-Type":"application/x-www-form-urlencoded",
"Content-Length":body.length
}
};
var req = http.request(options,function(incomming_msg){
console.log("responses status " + incomming_msg.statusCode);
incomming_msg.on("data",function(data){
if(incomming_msg.statusCode === 200){
callback(true,data);
}
})
});
req.write(body);
req.end();
}
http_post("127.0.0.1",6080,"/upload", "filename=my_file.txt","hello Http POST",function(is_ok,data){
if(is_ok){
console.log("upload is ok",data);
}
});//调用测试方法