URL

https://nodejs.org/api/url.html

引入模块

const url = require('url');

parse

参考API中 parse

url.parse()可以将一个完整的URL地址,分为很多部分:

host、port、pathname、path、query

//url.parse()可以将一个完整的URL地址,分为很多部分:
//host、port、pathname、path、query
var pathname = url.parse(req.url).pathname;


//url.parse()如果第二个参数是true,那么就可以将所有的查询变为对象
//就可以直接打点得到这个参数
var query = url.parse(req.url,true).query;
//直接打点得到这个参数
var age = query.age;

console.log("pathname:" + pathname);
console.log("query:" + query);
console.log("age:" + age);

案例

表单提交 参数提交

html表单

form.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="http://127.0.0.1:3000/" method="GET">
        <input type="text" name="name" /> <br />
        <input type="text" name="age" /> <br />
        <input type="radio" name="sex" value="男"/> 男
        <input type="radio" name="sex" value="女"/> 女
        <br />
        <input type="submit">
    </form>
</body>
</html>

js

var http = require("http");
var url = require("url");

var server = http.createServer(function(req,res){
    //得到查询部分,由于写了true,那么就是一个对象
    var queryObj = url.parse(req.url,true).query;
    var name = queryObj.name;
    var age = queryObj.age;
    var sex = queryObj.sex;

    res.end("服务器收到了表单请求" + name + age + sex);
});

server.listen(3000,"127.0.0.1");

Post

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="dopost" method="post" enctype="multipart/form-data">
        <p>
            姓名 : <input type="text" name="name">
        </p>
        <p>
            性别 : 
             <input type="radio" name="sex" value="男">男
             <input type="radio" name="sex" value="女">女
        </p>
        <p>
            爱好:
            <input type="checkbox" name="hobby" value="睡觉" />睡觉
            <input type="checkbox" name="hobby" value="吃饭" />吃饭
            <input type="checkbox" name="hobby" value="足球" />足球
        </p>
        <p>
            图片:
            <input type="file" name="tupian" />
        </p>
        <p>
            <input type="submit" />
        </p>
    </form>
</body>
</html>

js


var http = require("http");
var querystring = require("querystring");


//创建服务器
var server = http.createServer(function(req,res){
    //如果你的访问地址是这个,并且请求类型是post
    if(req.url == "/dopost" && req.method.toLowerCase() == "post"){
        var alldata = "";
        //下面是post请求接收的一个公式
        //node为了追求极致,它是一个小段一个小段接收的。
        //接受了一小段,可能就给别人去服务了。防止一个过大的表单阻塞了整个进程
        req.addListener("data",function(chunk){
            alldata += chunk;
        });
        //全部传输完毕
        req.addListener("end",function(){
            var datastring = alldata.toString();
            res.end("success");
            //将datastring转为一个对象
            var dataObj = querystring.parse(datastring);
            console.log(dataObj);
            console.log(dataObj.name);
            console.log(dataObj.sex);
        });
    }
});

server.listen(80,"127.0.0.1");

results matching ""

    No results matching ""