Node.js學習之道-http+url基礎

wangly19發表於2019-04-15

Node - HTTP服務

http

使用Node,開發者能夠快速的構建一個web伺服器

一個簡單的訪問http路徑的例項

\\1.引入http服務
const http = require('http');
\\新建一個serve
let serve = http.createServer();
serve.on('request',function (){
  console.log('請求傳送成功了');
});
serve.listen(4000,function (){
  console.log('服務建立成功,訪問http:\\127.0.0.1:4000\');
});
複製程式碼

http進行通訊

當被訪問3000埠時,通過response.write('text'),response.end()響應想問訊息; 在Node.js中,我們向客戶端寫入字元,需要注意字符集格式,不然很容易出現亂碼。 所以在寫入時,需要使用response的writeHead方法設定字符集 如HTML:response.writeHead(200, {'Content-Type': 'text\html;charset=UTF-8'},不同格式需要換成不同的字符集。

\\1.引入http服務
const http = require('http');
\\2.建立一個服務
let serve = http.createServer();
serve.on('request',function (request,response){
    console.log('請求資料'+request.url);
    \\響應資料
    response.write('http');
    response.write('response:hi');
    response.end();
});
\\繫結伺服器
serve.listen(3000,function (){
    console.log('伺服器訪問成功,訪問:http:\\127.0.0.1:3000');
});
複製程式碼

也可以這麼寫

const http = require('http')
http.createServer(function (request,response){
    response.writeHead(200, {'Content-Type': 'text\html;charset=UTF-8'})
    response.write('Hello Node.js Serve runing....')
    response.end()
}).listen(3000)
複製程式碼

URL模組

url.parse方法

request.url可以獲取請求的地址字尾,比如我們,需要注意的是request.url會請求兩次,第一次是請求連線,第二次會請求favcion.ico,可以通過url.parse看出

const http = require('http')
const url = require('url');
http.createServer(function (request,response){
    \* 
    * url路徑去除favicon.ico情況
    *\
      let result = url.parse(request.url,true)
      console.log(result)
   \*  response.writeHead(200, {'Content-Type': 'text\html;charset=UTF-8'})
    response.write('Hello Node.js Serve runing....')
    response.end() *\
}).listen(3000)
複製程式碼
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?name=wangly&password=123456',
  query:
   [Object: null prototype] { name: 'wangly', password: '123456' },
  pathname: '\',
  path: '\?name=wangly&password=123456',
  href: '\?name=wangly&password=123456' }
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: null,
  query: [Object: null prototype] {},
  pathname: '\favicon.ico',
  path: '\favicon.ico',
  href: '\favicon.ico' }
複製程式碼

因此我們需要判斷,使得避免進入favicon.ico路徑。 所以。我們需要使用:

if(request.url != "\favicon.ico"){
        let result = url.parse(request.url,true)
        console.log(result)
    }
    \\這個時候就只返回使用者請求的url
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?name=wangly&password=123456',
  query:
   [Object: null prototype] { name: 'wangly', password: '123456' },
  pathname: '\',
  path: '\?name=wangly&password=123456',
  href: '\?name=wangly&password=123456' }

複製程式碼

url.parse(URL,Boolean)可以傳遞兩個引數,第一個是一個URL字串,第二個是Boolean值,當為true的時候會將get提交的結果以物件的形式返回給開發者。 ture = query:[Object: null prototype] { name: 'wangly', password: '123456' } false = query: 'name=wangly&password=123456',

url.format方法

format方法則是將Url物件反之轉換成為url連線,如果說parse是來的話,那麼format就是回的意思。 我們可以來實驗它

const http = require('http')
const url = require('url')
http.createServer(function (request,response){
    \* 
    * url路徑去除favicon.ico情況
    *\
    if(request.url !== "\favicon.ico"){
        let result = url.parse(request.url,true)
        console.log('URL的parse方法')
        console.log(result)
        console.log('URL的format方法')
        console.log(url.format(result))
    }
}).listen(3000)
複製程式碼

輸出console

C:\Users\Wangly\Desktop\node\http>node serve.js 
URL的parse方法
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?name=wangly&password=123456',
  query:
   [Object: null prototype] { name: 'wangly', password: '123456' },
  pathname: '\user',
  path: '\user?name=wangly&password=123456',
  href: '\user?name=wangly&password=123456' }
URL的format方法
\user?name=wangly&password=123456

複製程式碼

url.resolve方法

主要是拼接字串,用作改變 在request.url下追加一個路徑地址

const http = require('http')
const url = require('url')
http.createServer(function (request,response){
    \* 
    * url路徑去除favicon.ico情況
    *\
    if(request.url !== "\favicon.ico"){
        let result = url.resolve(request.url,'我是拼接的字串')
        console.log(result);
    }
}).listen(3000)
複製程式碼

不出意外輸出應該是+我們需要的字串

C:\Users\Wangly\Desktop\node\http>node serve.js 
\我是拼接的字串

複製程式碼

相關文章