zoukankan      html  css  js  c++  java
  • Node.js获取GET/POST数据

    目标:使用Node.js搭建简单服务器提供简单接口,达到两数字加减乘除计算并返回json结果。(通用GET/POST)

    知识点

    1. 获取GET数据
    2. 获取POST数据
    3. 了解监听事件

    实现

    var http = require("http");            //提供web服务  
    var url = require("url");            //解析GET请求  
    var query = require("querystring");    //解析POST请求
    
    //服务
    var server = function(request,response){  
        //定义报文头
        response.writeHead(200,{"Content-Type":"text/json"});
        //判断是GET/POST请求
        if(request.method == "GET"){
            var params = [];
            params = url.parse(request.url,true).query;
            params['fruit'] = compute(params);
            response.write(JSON.stringify(params));
            response.end();
        }else{
            var postdata = "";
            request.addListener("data",function(postchunk){
                postdata += postchunk;
            })
    
            //POST结束输出结果
            request.addListener("end",function(){
                var params = query.parse(postdata);
                params['fruit'] = compute(params);
                response.write(JSON.stringify(params));
                response.end();
            })
        }
    
    }
    
    //计算
    var compute = function(params){  
        switch(params['type']){
            case "add": return parseFloat(params['num']) + parseFloat(params['num1']);break;
            case "subtract": return parseFloat(params['num']) - parseFloat(params['num1']);break;
            case "multiplication": return parseFloat(params['num']) * parseFloat(params['num1']);break;
            case "division": return parseFloat(params['num']) / parseFloat(params['num1']);break;
        }
    }
    
    //开启服务在127.0.0.1:8080
    http.createServer(server).listen(8080);  
    console.log("Server start!");  

    值得注意的是由于POST质量过大,所以不能像GET请求那样直接拿去数据。需要增加监听事件,并且在POST结束前都不能结束应答(response)完成报文流,所以要把输出、结束放到监听结束事件里。

    测试

    GET:http://127.0.0.1:8080/?num=32&num1=13&type=add 
    //print {"num":"32","num1":"13","type":"add","fruit":45}

    POST: 
    我测试POST使用的是chrome插件postman,当然它一样可是测试GET请求。它包含所有请求类型(delete、put、copy、patch、lock等)

    POST请求

    GET请求

  • 相关阅读:
    Nginx 安装与配置
    CentOS 7 下安装 MySQL 5.7
    使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
    Linux7 安装python3.5.4
    Java基础---Java 类
    Java基础---Java 练习题49
    Apache tomcat
    html 基础
    Java基础---Java 数组
    hibernate的查询方式的介绍(一)
  • 原文地址:https://www.cnblogs.com/miid/p/5656476.html
Copyright © 2011-2022 走看看