Node.js 教程第四篇——路由

路由

在 BS 架構中,路由的概念都是同樣的,可理解爲根據客戶端請求的 URL 映射到不一樣的方法實現,更多的通常都是針對 URL 中的路徑,或者是參數,又或者是錨點這些信息進行映射。javascript

應用

場景

  1. 註冊一個帳戶 --> [post] --> http://localhost:88/register
  2. 註冊成功的狀況下跳轉到登陸界面進行登陸 --> [post] --> http://localhost:88/login
  3. 登陸成功進行獲取學生信息 --> [get] --> http://localhost:88/students
  4. 同時能夠獲取訂單信息 --> [get] --> http://localhost:88/orders
  5. 如何訪問不存在的路由則拋出錯誤信息。
const http = require('http')
const url = require('url')
const qs = require('querystring');
const util = require('util');

http.createServer((request, response) => {
    let urlObj = url.parse(request.url, true);
    let pathname = urlObj.pathname;
    let method = request.method.toUpperCase();
    let params = urlObj.query;
    if(method == 'POST'){
        let postData = '';
        request.on('data', (_data) => {
            postData += '_data';
        })
        request.on('end', () => {
            postData = qs.parse(postData);
            let result = {};
            switch(pathname){
                case '/login':
                    //鏈接數據庫,實現登錄邏輯
                    result = {status: true};
                    break;
                case '/register':
                    //鏈接數據庫,實現註冊邏輯
                    result = {status: true};
                    break;
                default :
                    result = {status: false, message: '沒有對應的請求'};
                    break;                  
            }
            response.end(util.inspect(result))
        })
    } else {
        let result = {};
        switch(pathname){
            case '/students':
                //鏈接數據庫,獲取學生信息
                result = {status: true, data: [], params};
                break;
            case '/orders':
                //鏈接數據庫,獲取訂單信息
                result = {status: true, data: [], params};
                break;
            default :
                result = {status: false, message: '沒有對應的請求', params};
                break;
        }
        response.end(util.inspect(result))
    }
}).listen(88)
相關文章
相關標籤/搜索