NodeJS学習ノートの項目:登録と登録を実現する

4387 ワード

考え方:
  • 登録は、送信されたデータが特に多くないため、get方式で要求される.
  • 登録は、送信されたデータがアバターファイルに関連してアップロードされるためpost方式で要求される.

  • 一、ログインインタフェースloginを作成する.html,ajaxリクエストインタフェースはjQueryを採用している.
    
    
    
    
        
          
        

    $('#login').click(function () { $.ajax({ url: "/login", data: { username: $("#username").val(), password: $("#password").val() }, dataType: "json", success(res) { if (res.err) { alert(res.msg) } else { alert(" "); location.href = "admin.html" } } }) }) $('#reg').click(function () { $.ajax({ url: "/reg", method: "post", data: { username: $("#username").val(), password: $("#password").val() }, dataType: "json", success(res) { if (res.err) { alert(res.msg) } else { alert(" ") } } }) })

    二、サービス側nodejsインタフェースAPI処理ロジック:
  • 要求方式を判断し、要求されたデータを取得する.
  • 経路により要求されたインタフェースがloginであるかregであるかを判断する.
  • ユーザー名パスワードの正確性と存在するかどうかを確認する.
  • ステータスコードおよび情報を出力して、フロントエンドに成功したか否かを判定する.
  • let http = require('http');
    let url = require('url');
    let querystring = require('querystring');
    let fs = require('fs');
    
    //        
    let user = {
        admin: 123456
    }
    
    http.createServer((req, res) => {
        let path, getData, postData
    
        if (req.method == 'GET') {
            let { pathname, query } = url.parse(req.url, true);
            path = pathname;
            getData = query;
            complete();
        } else if (req.method == 'POST') {
            let result = [];
            path = req.url;
    
            req.on('data', buffer => {
                result.push(buffer)
            });
    
            req.on("end", () => {
                postData = querystring.parse(Buffer.concat(result).toString());
                complete();
            })
        }
    
        function complete() {
            if (path == '/login') {
                res.writeHead(200, {
                    'Content-Type': 'text/plain;charset=utf-8'
                })
    
                let { username, password } = getData;
    
                if (!user[username]) {
                    res.end(JSON.stringify({
                        err: 1,
                        msg: '      '
                    }))
                } else if (user[username] != password) {
                    res.writeHead(200, {
                        'Content-Type': 'text/plain;charset=utf-8'
                    })
    
                    res.end(JSON.stringify({
                        err: 1,
                        msg: '     '
                    }))
                } else {
                    res.end(JSON.stringify({
                        err: 0,
                        msg: '    '
                    }))
                }
            } else if (path == '/reg') {
                res.writeHead(200, {
                    'Content-Type': 'text/plain;charset=utf-8'
                });
                let { username, password } = postData;
                if (user[username]) {
                    res.end(JSON.stringify({
                        err: 1,
                        msg: '      '
                    }))
                } else {
                    user[username] = password;
                    res.end(JSON.stringify({
                        err: 0,
                        msg: '    '
                    }))
                }
            } else {
                fs.readFile(`./${path}`, (err, data) => {
                    if (err) {
                        res.end('404');
                    } else {
                        res.end(data);
                    }
                })
            }
        }
    }).listen(8088)