深入了解http://127.0.0.1:8080

一、端口號的含義

1、端口號的作用

端口號是用於標識主機中特定進程的數字,分配給客戶端或服務端的進程。對於HTTP而言,端口號默認為80。而我們所熟知的127.0.0.1:8080,則是本機IP地址(回送地址),加上其它服務程序所佔用的端口號8080。

2、示例代碼:

const http = require('http');
const hostname = '127.0.0.1';
const port = 8080;
http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

二、回送地址的使用

1、回送地址的作用

回送地址,即127.0.0.1,其作用是將網絡數據包返回給發包者的地址。可以通過回送地址實現在本機進行服務端程序測試,以及在一個沒有獨立IP地址的計算機上測試客戶端程序。

2、示例代碼:

const http = require('http');
const hostname = '127.0.0.1';
const port = 8080;
http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

三、HTTP協議的特點

1、HTTP協議的無狀態性

HTTP協議是無狀態的,即兩次請求之間沒有關聯。這樣一來,服務端無法知道現在請求與上次請求是否來自同一個客戶端。可以通過Cookie、Session等機制實現服務端記錄客戶端信息。

2、HTTP協議的請求方式

HTTP協議的請求方式有GET、POST、PUT、DELETE等。GET方式用於獲取資源,POST方式用於提交資源,PUT方式用於更新資源,DELETE方式用於刪除資源。

3、示例代碼:

const http = require('http');
const hostname = '127.0.0.1';
const port = 8080;
http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  if(req.method === 'GET') {
    res.end('This is a GET request!');
  } else if(req.method === 'POST') {
    res.end('This is a POST request!');
  } else {
    res.end('This is not a GET or POST request!');
  }
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

四、路由的概念與應用

1、路由的含義

路由是指為了實現不同URL地址請求的分發而設立的一種機制。在Node.js中,使用路由實現對不同請求的不同響應。這樣一來,就可以實現實現更加靈活的請求頁面響應。

2、示例代碼:

const http = require('http');
const url = require('url');
const hostname = '127.0.0.1';
const port = 8080;

const route = {
  '/': function(req, res) {
    res.end('This is the home page');
  },
  '/about': function(req, res) {
    res.end('This is the about page');
  },
  '/contact': function(req, res) {
    res.end('This is the contact page');
  }
};

http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  let pathname = url.parse(req.url).pathname;
  if(route[pathname]){
    route[pathname](req, res);
  } else {
    res.end('404 Page Not Found');
  }
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

五、模板引擎的使用

1、模板引擎的作用

模板引擎是指以標籤或代碼為基礎,結合數據渲染生成具有結構、樣式和功能的HTML頁面的工具。在Node.js中,常用的模板引擎有handlebars和ejs。

2、示例代碼(使用ejs):

const http = require('http');
const ejs = require('ejs');
const hostname = '127.0.0.1';
const port = 8080;

const tpl = `

  


  

Content:

`; http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/html'); const data = { title: 'EJS Demo', heading: 'Hello EJS', content: 'This is an example of using EJS!' }; const html = ejs.render(tpl, data); res.end(html); }).listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/159320.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-19 18:59
下一篇 2024-11-19 18:59

相關推薦

  • 為什麼要加請求頭(HTTP Header)?

    在進行網頁抓取(Web Scraping)時,請求頭(HTTP Header)扮演着非常重要的角色。請求頭中包含了用戶代理(User Agent)、cookie、referer等信…

    編程 2025-04-27
  • HTTP請求方式的選擇:POST還是GET?

    對於使用xxl-job進行任務調度的開發者,通常需要發送HTTP請求來執行一些任務。但是在發送請求時,我們總是會遇到一個問題:是使用POST還是GET?下面將從多個方面對這個問題進…

    編程 2025-04-27
  • 如何快速發佈http接口

    想要快速發佈http接口,可以從以下幾個方面入手。 一、選擇合適的框架 選擇合適的框架對於快速發佈http接口非常重要。目前比較受歡迎的框架有Flask、Django、Tornad…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、位元組與比特 在討論byte轉int之前,我們需要了解位元組和比特的概念。位元組是計算機存儲單位的一種,通常表示8個比特(bit),即1位元組=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • 深入了解scala-maven-plugin

    一、簡介 Scala-maven-plugin 是一個創造和管理 Scala 項目的maven插件,它可以自動生成基本項目結構、依賴配置、Scala文件等。使用它可以使我們專註於代…

    編程 2025-04-25
  • 深入了解LaTeX的腳註(latexfootnote)

    一、基本介紹 LaTeX作為一種排版軟件,具有各種各樣的功能,其中腳註(footnote)是一個十分重要的功能之一。在LaTeX中,腳註是用命令latexfootnote來實現的。…

    編程 2025-04-25
  • 深入理解Python字符串r

    一、r字符串的基本概念 r字符串(raw字符串)是指在Python中,以字母r為前綴的字符串。r字符串中的反斜杠(\)不會被轉義,而是被當作普通字符處理,這使得r字符串可以非常方便…

    編程 2025-04-25

發表回復

登錄後才能評論