nodejsのgetとpostサービス

10319 ワード

webサービスでは、表現とデータを提出する場合、getとpostは非常に一般的な2つのサービスです.今はnodejsでこの二つのサービスを実現します.
一、get操作
app.
<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の実現は比較的に煩わしいので、buffer.co pyという関数に特に注意してもいいです.
app.
<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');  

});