Node.js 中的路由請求


路由 HTTP 請求非常重要,因為我們希望根據請求 URL 執行不同的業務規則,並且每個路由的響應將不同。

之前我們看到,我們可以透過 request.url 在 Node 中獲取 URL。下面顯示了一個簡單的帶有路由的使用者姓名輸入示例:

const http = require('http');
const server = http.createServer((req, res)=>{
   const url = req.url;
   if(url === '/'){
      res.write('<html>');
      res.write('<head> <title> Hello TutorialsPoint </title> </head>');
      res.write(' <body> <form action="/username" method="POST">
      <input type="text" name="user"/>
      <button type="submit">Submit</button> </body>');
      res.write('</html>');
      return res.end();
   }
});
server.listen(3000);

在終端上執行:node App.js

開啟瀏覽器並導航到 localhost:3000/,您將看到以下輸出:

我們檢查了 URL 是否與 ‘/’ 匹配,然後僅向客戶端傳送響應以顯示帶有提交按鈕的輸入框。在程式碼中,我們使用了 return res.end() 來避免在呼叫 end() 函式後對響應物件進行任何更改。

如果 URL 與 ‘/’ 不同,則我們可以顯示其他訊息。我們使用了表單 action ‘/username’ 並且方法為 post。我們還有一個名稱屬性為 user 的輸入框。此名稱屬性將在 post 請求中傳遞以供進一步使用。

完整的 App.js 檔案如下:

const http = require('http');
const server = http.createServer((req, res)=>{
   const url = req.url;
   if(url === '/'){
      res.write('<html>');
      res.write('<head> <title> Hello TutorialsPoint </title> </head>');
      res.write(' <body> <form action="/username" method="POST"> <input type="text" name="username"/>       <button type="submit">Submit</button> </body>');
      res.write('</html>');
      return res.end();
   }
   res.write('<html>');
   res.write('<head> <title> Hello TutorialsPoint </title> </head>');
   res.write(' <body> Hello </body>');
   res.write('</html>');
   res.end();
});
server.listen(3000);

輸入使用者名稱並點擊發送後的輸出螢幕:

我們可以在這裡看到,URL 更改為 /username,這是因為我們在之前的響應中添加了表單 action。

在第二個 res.end() 中,我們沒有新增 return 語句,因為之後沒有程式碼,所以我們不需要擔心它。

使用 URL /username,我們的程式碼不會執行包含表單輸入程式碼的 if 塊,而是會執行 if 塊下面的程式碼。

更新於: 2020年5月13日

1K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.