zoukankan      html  css  js  c++  java
  • nodejs的get和post服务

        在web服务中,提交表达和数据时,get和post是非常常用的两种服务。现用nodejs实现这两个服务。

    一、get操作

    app.html:

    <html>
      <head>
        <title>登陆页面</title>
      </head>
      <body>
        <form action="check" method="get">
          <p>First name: <input type="text" name="fname" /></p>
          <p>Last name: <input type="text" name="lname" /></p>
          <input type="submit" value="Submit" />
        </form>
      </body>
    </html> 

    app.js

    var http = require('http');
    var urllib = require('url');
    var fs = require('fs');
    
    var html = fs.readFileSync('./app.html');
    
    var app = http.createServer(function(req, res){
      var params = urllib.parse(req.url, true);
      if (params.pathname === '/login') {
        res.end(html);
      } else if (params.pathname === '/check') {
        var params = urllib.parse(req.url, true);
        res.end(JSON.stringify(params.query));
      }
    });
    
    app.listen(5678, function(){
      console.log('server is listening on 5678');  
    });

    二、post操作

    post的实现相对比较繁琐,可以特别注意下buffer.copy这个函数

    app.html:

    <html>
      <head>
        <title>登陆页面</title>
      </head>
      <body>
        <form action="check" method="post">
          <p>First name: <input type="text" name="fname" /></p>
          <p>Last name: <input type="text" name="lname" /></p>
          <input type="submit" value="Submit" />
        </form>
      </body>
    </html> 

    app.js:

    var http = require('http');
    var urllib = require('url');
    var fs = require('fs');
    var querystring = require('querystring');
    
    var html = fs.readFileSync('./app.html');
    
    var app = http.createServer(function(req, res){
      var params = urllib.parse(req.url, true);
      if (params.pathname === '/login') {
        res.end(html);
      } else if (params.pathname === '/check') {
        var chunks = [];
        var length = 0;
        var rows = null;
        req.on('data', function(data){
          chunks.push(data);
          length += data.length;
        }) 
        req.on('end', function(){
          var rows = new Buffer(length);
          var len = 0;
          for (var i = 0, il = chunks.length; i < il; i++) {
            chunks[i].copy(rows, len);
            len += chunks[i].length;
          }
          var args = querystring.parse(rows.toString());
          res.end(JSON.stringify(args));
        })
      }
      
    });
    
    app.listen(5678, function(){
      console.log('server is listening on 5678');  
    });
  • 相关阅读:
    iOS开发笔记--Layer 图层圆角、边框 、底纹其他常用操作
    tableView中deselectRowAtIndexPath的作用
    升级到XCode6后,iOS8里设置tableview的setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
    UITableView代理和数据源方法总结
    ios修改textField的placeholder的字体颜色、大小
    iOS-TextField知多少
    iOS开发SVN更新代码不报错却运行不了问题
    apache http server 局域网无法访问
    修改 apache http server 默认站点目录
    批处理 教程(转载)
  • 原文地址:https://www.cnblogs.com/lengyuhong/p/2488886.html
Copyright © 2011-2022 走看看