NodeJs 建立一個簡單的服務

我的學習記錄,僅供參考

建立第一個應用

參考html

步驟
  • 引入 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

  • 手動拆分字符串 (比較麻煩)
  • 使用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 方法去解析接收過來的數據api

上代碼瀏覽器

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);
相關文章
相關標籤/搜索