NodeJs 创建一个简单的服务

个人学习记录,仅供参考

创建第一个应用

参考

步骤

  • 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
  • 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
  • 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

引入 required 模块

var http = require("http");

创建服务器

/**
 * request 请求 输入-请求的信息
 * response 响应 输出-输出的东西
 * http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。
 */
http.createServer(function (req, res) {
    switch (req.url){
        case '/1.html':
            res.write("1111111");
            break;
        case '/2.html':
            res.write("22222222");
            break;
        default:
            res.write("404");
            break;
    }
    res.end();
}).listen(8888);

启动服务器

node server.js

接收前台数据

GET

前台代码提交表单

<form action="http://127.0.0.1:8080/www" method="get">
    用户名:<input type="text" name="user" value="">
    密码:<input type="password" name="pass" value="">
    <input type="submit" value="提交">
</form>

后台代码接收数据

接收进来的数据参数可以有三种方式去解析

  • 手动拆分字符串 (比较麻烦)
  • 使用node提供的 querystring 方法
const http = require('http');
    const querystring = require('querystring');
    http.createServer(function (req,res) {
        var GET = {};
        if(req.url.indexOf("?") != -1){
            var arr = req.url.split('?');
            var url = arr[0];
            GET = querystring.parse(arr[1]);
        }else {
            var url = req.url;
        }
        console.log(url,GET)// /aaa { user: '孙悟空', pass: '123456' }
        res.write('aaa');
        res.end();
}).listen(8080);

  • 使用node提供的 url 方法 (相对来说 url还是比较简单的)
const http = require('http');
const urlLib = require('url');
http.createServer(function (req,res) {
    var obj = urlLib.parse(req.url,true)
    var url = obj.pathname;
    var GET = obj.query;
    console.log(url,GET)// /aaa { user: '孙悟空', pass: '123456' }
    res.write('aaa');
    res.end();
}).listen(8080);

POST

前台代码提交表单

<form action="http://127.0.0.1:8080/www" method="post">
    用户名:<input type="text" name="user" value="">
    密码:<input type="password" name="pass" value="">
    <input type="submit" value="提交">
</form>

后台代码接收数据

在这里咱们使用node提供的 querystring 方法去解析接收过来的数据

上代码

const http = require('http');
const querystring = require('querystring');
http.createServer(function (req,res) {
    var str = '';//接收数据
    //data ==> 有一段数据到达(很多次)每次执行一次就是分段一次
    var i = 0;
    req.on('data',function (data) {
        console.log(`第${i++}次收到数据`);//第0次收到数据(每次执行都会打印一个)
        str += data;
    });
    //end ==> 数据全部到达的时候 (只发生一次)
    req.on('end',function () {
        var POST = querystring.parse(str);
        console.log(POST);//{ user: '孙悟空', pass: '123123' }
    });
}).listen(8080);

以上知识点整合

const http = require('http');
const fs = require('fs');
const querystring = require('querystring');
const urlLib = require('url');
http.createServer(function (req,res) {
    //GET
        var obj = urlLib.parse(req.url,true);
        var url = obj.pathname;
        const GET = obj.query;
    //POST
        var str = '';
        req.on("data",function (data) {
            str += data;
        });
        req.on("end",function () {
            const POST = querystring.parse(str);
            /**
             * url==>要什么
             * GET==>get数据
             * POST==>post数据
             */
            console.log(url,GET,POST);
            //文件请求
            var file_name = './www'+url;
            fs.readFile(file_name,function (err,data) {
                if(err){
                    res.write('404')
                }else {
                    res.write(data)
                }
            })
        })
}).listen(8080);
    原文作者:杭州蘇小小
    原文地址: https://segmentfault.com/a/1190000016107598
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞