node.js--ルーティングの簡単な構成とパッケージを通してgetとpost送信値を取得する。

23621 ワード

一、ルートの簡単な構成
let http=require("http");
http.createServer((require,response)=>{
     
    let path = url.parse(require.url);   //      
    let pathname=path.pathname;          //    

    if(pathname!="/favicon.ico"){
         //       “/favicon.ico”  
        response.writeHead(200,{
     "Content-Type":"text/html;charset=utf-8;"});
        //        
        if(pathname=="/"){
     
            response.end("  ");
        }
        if(pathname=="/login"){
     
            response.end("  ");
        }
        if(pathname=="/my"){
     
            response.end("  ");
        }
        response.end();  //       end             
    }
}).listen(8000,"127.0.0.1",()=>{
     
    console.log("http://127.0.0.1:8000");
 })
二、ルートのパッケージ
           ,     :

1.         router.js
2.           ,     ,           
module.exports={
     
    "/":(require,response)=>{
     
        //             ,   
        response.end("  ");
    },
    "/login":(require,response)=>{
     
        response.end("  ");
    },
    "/my":(require,response)=>{
     
        response.end("  ");
    },
}

3.            
let http = require("http");
let router = require("./router");    //      
let path = url.parse(require.url);   //      
let pathname=path.pathname;          //    
http.createServer((require,response)=>{
     
    if(pathname!="/favicon.ico"){
     
        response.writeHead(200,{
     "Content-Type":"text/html;charset=utf-8;"});
        //    [  ]           
        if(router[pathname]){
        //router[pathname]        
           //                 ,     ,        
            router[pathname](require,response);        
        }else{
     
            response.end("404");
        }
    }
}
三、getとpost伝値を取得する(ルートを結合する)
  • は、get転送値を取得する(以下のフォームを例にする)
  • 1.                  "/index" get    
    /*   :admin    :12345*/
    <form action="/index" method="get">
       <ul>
          <li><label for="">   :</label><input name="userid" type="text"></li>
          <li><label for=""></label><input name="userpwd" type="text"></li>
          <li><input type="submit"></li>
      </ul>
    </form>
    
    2./index ”    ,      
    module.exports={
         
       "./index":(require,response)=>{
         
           console.log(require.url);   ///index?userid=admin&userpwd=12345
           let path = url.parse(require.url,true).query;   //    ,         
           console.log(path);    //path         get    
           //  { userid: 'admin', userpwd: '12345' }
        }
    }
    
    3.                  
    
  • postパス値(以下のフォームを例にして)
  • 1.                  "/index" post    
    /*   :admin    :12345*/
    <form action="/index" method="post">
       <ul>
          <li><label for="">   :</label><input name="userid" type="text"></li>
          <li><label for=""></label><input name="userpwd" type="text"></li>
          <li><input type="submit"></li>
      </ul>
    </form>
    
    2./index ”    ,      
    --- get      ,post                
    ---post           
    
    module.exports={
         
       "./index":(require,response)=>{
         
           let info= "?";  //      get       
           //data  :         ,         
           require.on("data",(result)=>{
         
              info+=result;
           })
           //end   :        ,         
           require.on("end",()=>{
           
       /*
       --info   userid=admin&userpwd=12345   get      ( get    “?”  )--
       --    info   “?”                get       ,     --
       */
             console.log(info);   
             //  ?userid=admin&userpwd=12345
             console.log( url.parse(info,true).query);
             ejs.renderFile("view/index.html",(error,str)=>{
         
                 if(error){
         
                   throw error;
                 }
                 response.end(str);
            })
         })
      } 
    }