【Node.js】 使用express配置静态web服务、http客户端以及get与post基本用法

搭建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);
    }
});//调用测试方法

效果

效果图

猜你喜欢

转载自blog.csdn.net/agsgh/article/details/81107991