zoukankan      html  css  js  c++  java
  • [Node.js]get/post请求

    摘要

    在很多情况下,我们的web服务器都需要接受客户端浏览器传递的参数或者数据。最常见的是get和post请求。

    获取get请求的内容

    get请求传递的参数在url中,参数部分在?后面。因此可以手动解析后面的内容作为get请求的参数。node.js中url模块中的parse函数提供了这个功能。

    一个例子

    var http=require("http");
    var url=require("url");
    var util=require("util");
    http.createServer(function(request,response){
        response.writeHead(200,{"Content-Type":"text/plain"});
        response.end(util.inspect(url.parse(request.url,true)));
    }).listen(5544);

    启动服务器

    浏览器访问

    使用parse解析url中的参数

    webserver.js核心代码如下:

    var http=require("http");
    var url=require("url");
    var util=require("util");
    function start(route){
        function onRequest(request,response){
            response.writeHead(200,{"Content-Type":"text/plain"});
            //解析url参数
            var params=url.parse(request.url,true).query;
            response.write("my name is "+params.name);
        
            response.end();
        };
        http.createServer(onRequest).listen(5544);
        console.log("web server has started.");
    };
    exports.start=start;

    route.js代码如下:

    function route(pathname){
        console.log("request the route "+pathname);
    };
    exports.route=route;

    user.js代码如下

    var server=require("./webserver");
    var router=require("./router");
    server.start(router.route);

    启动webserver

    浏览器浏览

    post请求

    post请求的内容全部在请求体中,http.ServerRequest并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。

    比如上传文件,而很多时候我们可能并不需要理会请求体内容,恶意的post请求会大大消耗服务器资源,所以node.js默认是不会解析请求体的,当你需要的时候,需要手动来做。

    一个例子

    var http=require("http");
    var url=require("url");
    var util=require("util");
    var querystring=require("querystring");
    function start(route){
        function onRequest(request,response){
            //定义一个post变量,用于暂时村塾请求体信息。
            var post='';
            //通过request的data事件监听函数,每当接受到请求的数据,就累加到post变量中
            request.on("data",function(chunk){
                post+=chunk;
            });
            //在end事件触发后,通过querystring.parse将post解析为真正的post请求格式,
    然后想客户端返回。
    request.on("end",function(){ post=querystring.parse(post); response.end(util.inspect(post)); }); response.writeHead(200,{"Content-Type":"text/plain"}); //解析url参数 var params=url.parse(request.url,true).query; response.write("my name is "+params.name); response.end(); }; http.createServer(onRequest).listen(5544); console.log("web server has started."); }; exports.start=start;

    学习资料

    http://www.runoob.com/nodejs/node-js-get-post.html

  • 相关阅读:
    IOS学习笔记 ---- 15/09/14
    IOS学习笔记 ---- 15/09/07
    IOS学习笔记 ---- 15/09/06
    IOS学习笔记 ---- 15/09/02
    IOS学习笔记 ---- 15/09/01
    IOS学习笔记 ---- 15/08/31
    IOS学习笔记 ---- 15/08/30之前
    ios之UITableViewController(二) tableView的编辑模式
    ios之UIPageController和UIScrollView配合使用
    ios之UIScrollView
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/6476373.html
Copyright © 2011-2022 走看看