Node.js express獲取參數有三種方法


express獲取參數有三種方法:官網介紹如下

 

  • Checks route params (req.params), ex: /user/:id
  • Checks query string params (req.query), ex: ?id=12
  • Checks urlencoded body params (req.body), ex: id= 

1、例如:127.0.0.1:3000/:index,這種情況下,我們為了得到index,我們可以通過使用req.params得到,通過這種方法我們就可以很好的處理Node中的路由處理問題,同時利用這點可以非常方便的實現MVC模式;

 

2、例如:127.0.0.1:3000/index?id=12,這種情況下,這種方式是獲取客戶端get方式傳遞過來的值,通過使用req.query.id就可以獲得,類似於PHP的get方法

3、例如:127.0.0.1:300/index,然后post了一個id=2的值,這種方式是獲取客戶端post過來的數據可以通過req.body.id獲取,類似於PHP的post方法

 

下面舉例介紹下這三個方法:

如下一個test.html代碼

  1. <form action="/index" method="get">  
  2.        <input type="text" name="login_name"/>  
  3.      <input type="submit" value="Sign In" />  
  4. </form>  

在nodeJs中我們要自定義HTTP,因此創建index.js

  1. var app = require('express').createServer();  
  2.   
  3. app.get('/:key', function(req, res){  
  4.   console.log(req.params.key);//輸出index   
  5.   console.log(req.query.login_name);//輸出表單get提交的login_name   
  6.   res.send('great you are right for get method!');//顯示頁面文字信息   
  7. });  
  8. app.post('/:key', function(req, res){  
  9. <pre name="code" class="javascript">  console.log(req.params.key);//輸出index   
  10.   console.log(req.body.login_name);//輸出表單post提交的login_name   
  11.   res.send('great you are right for post method!');//顯示頁面文字信息  

});app.listen(3000);

 
        

 

 
        

之后運行node index.js就可以看到本效果,當然前提是你要先訪問test.html,至於如何通過express訪問一個html文件我就不詳細描述了,可以參考如下代碼:

  1. global.fs=require('fs');          
  2. var realpath = VIEW + "test.html";  
  3. var file = fs.readFileSync(realpath);  
  4. res.end(file);  

【url.format(urlObject)】

  url.parse(str)的反向操作,輸入一個解析過的 URL 對象,返回格式化過的字符串

  urlObject包含了很多字段,比如protocol、slashes、protocol等,且不一定需要全部傳,所以有一套解析邏輯

  格式化的工作流程如下

復制代碼
href 會被忽略
protocol 無論是否有末尾的 : (冒號),會同樣的處理
http, https, ftp, gopher, file 協議會被添加后綴://
mailto, xmpp, aim, sftp, foo, 等協議添加后綴:
slashes 如果協議需要 ://,設置為 true
僅需對之前列出的沒有斜杠的協議,比如議 mongodb://localhost:8000/
auth 如果出現將會使用.
hostname 僅在缺少 host 時使用
port 僅在缺少 host 時使用
host 用來替換 hostname 和 port
pathname 無論結尾是否有 / 將會同樣處理
search 將會替代 query屬性
無論前面是否有 / 將會同樣處理
query (對象; 參見 querystring) 如果沒有 search,將會使用
hash 無論前面是否有#,都會同樣處理
復制代碼
復制代碼
var url = require('url');
var obj = {
  protocol: 'http:',
  auth: 'user:pass',
  host: 'host.com:8080',
  hash: '#hash',
  query: { author: '小火柴' }
}
//http://user:pass@host.com:8080?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash
console.log(url.format(obj));
復制代碼

【url.resolve(from, to)】

  url.resolve()方法以一種瀏覽器解析超鏈接的方式把一個目標URL解析成相對於一個基礎URL,參數如下

from <String> 解析時相對的基本 URL。
to <String> 要解析的超鏈接 URL。
var url = require('url');
console.log(url.resolve('/one/two/three', 'four'));         // '/one/two/four'
console.log(url.resolve('http://example.com/', '/one'));    // 'http://example.com/one'
console.log(url.resolve('http://example.com/one', '/two')); // 'http://example.com/two'

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM