Rumah  >  Artikel  >  hujung hadapan web  >  Pembelajaran modul Node http: bercakap tentang penggunaan asas

Pembelajaran modul Node http: bercakap tentang penggunaan asas

青灯夜游
青灯夜游ke hadapan
2023-02-03 18:32:482304semak imbas

Artikel ini akan memperkenalkan anda kepada modul http Node.js dan memperkenalkan kaedah createServer dan mendengar saya harap ia akan membantu anda!

Pembelajaran modul Node http: bercakap tentang penggunaan asas

modul http

Gunakan Node.js untuk mencipta perkhidmatan web, terutamanya bergantung pada modul http terbina dalam. Rangka kerja express.js dan koa.js klasik semuanya dirangkumkan pada tahap yang berbeza-beza dengan modul http sebagai teras.

Mencipta perkhidmatan web yang paling mudah hanya memerlukan beberapa baris kod. Cipta fail index.js baharu dan masukkan kandungan berikut:

// 1.导入 http 模块
const http = require('http');

// 2. 调用 createServer 方法创建服务
const server = http.createServer((request, response) => {
    // 3.响应给浏览器的内容
	response.end('Hello, World'); 
});

// 4.执行 listen 方法,启动服务
server.listen(3000, () => {
    console.log('服务器启动成功:http://localhost:3000')
})

Kemudian buka alat baris arahan dan gunakan perintah node untuk melaksanakan fail:

node index.js

The alat baris arahan akan mencetak :

服务器启动成功:http://localhost:3000

Kemudian buka penyemak imbas dan lawati http://localhost:3000, anda akan melihat kandungan berikut:

Pembelajaran modul Node http: bercakap tentang penggunaan asas

Di sini, hanya diperlukan hanya 6 baris kod untuk mencipta perkhidmatan web. [Tutorial berkaitan yang disyorkan: tutorial video nodejs, Pengajaran pengaturcaraan]

kaedah createServer

Seperti yang anda lihat, kaedah teras untuk mencipta Web perkhidmatan adalahcreateServer Kaedah.

Ia menerima fungsi panggil balik dan parameter panggil balik menerima dua parameter, iaitu:

  • objek permintaan: mewakili objek permintaan HTTP, yang mengandungi permintaan pelanggan Maklumat membawa
  • objek tindak balas: mewakili objek tindak balas HTTP, digunakan untuk menetapkan maklumat respons kepada klien

Fungsi panggil balik ini ialah pemprosesan http permintaan, tempat utama untuk menetapkan respons http. Oleh itu, menulis perkhidmatan web sebenarnya sentiasa memproses permintaan dan kandungan respons dalam fungsi ini. Ini juga ditentukan oleh model respons-permintaan berdasarkan protokol HTTP itu sendiri. Sudah tentu, dalam pembangunan sebenar, kita pasti tidak boleh menulis dalam cara yang bercampur-campur Kita semua menggunakan rangka kerja, yang akan mempunyai mekanisme dan lapisan perantara yang sangat munasabah.

kaedah mendengar

Kita semua tahu bahawa protokol TCP ialah protokol asas protokol HTTP dan semua data permintaan HTTP dihantar menggunakan TCP. Untuk menghantar permintaan HTTP, sambungan TCP mesti diwujudkan dahulu.

Perkara yang sama berlaku untuk mencipta perkhidmatan HTTP dalam Node. Selepas kaedah createServer dilaksanakan, contoh kelas Server akan dibuat Kelas Server mewarisi daripada kelas net dalam modul terbina dalam lain Server, yang mempunyai kaedah listen. . Di bawah ialah pengisytiharan jenis yang berkaitan untuk memahami perhubungan.

// net 模块

class Server extends EventEmitter {
 
        /**
         * 启动服务器监听连接。此 Server 可以是 TCP 或 IPC 服务器,具体取决于它所监听的内容。
         */
        // 有若干重载,这是最常使用的一种方法
        listen(port?: number, hostname?: string, listeningListener?: () => void): this;
        listen(port?: number, listeningListener?: () => void): this;
}


// http 模块
import { Server as NetServer } from 'node:net';

function createServer<
        Request extends typeof IncomingMessage = typeof IncomingMessage,
        Response extends typeof ServerResponse = typeof ServerResponse,
    >(requestListener?: RequestListener<Request, Response>): Server<Request, Response>;
      
class Server<
        Request extends typeof IncomingMessage = typeof IncomingMessage,
        Response extends typeof ServerResponse = typeof ServerResponse,
    > extends NetServer {}

Jadi selepas mencipta perkhidmatan melalui kaedah createServer, anda juga menggunakan untuk memanggil kaedah listen untuk memulakan perkhidmatan dan mendengar sambungan .

Ia mempunyai berbilang beban yang paling biasa digunakan adalah untuk mendengar port Selepas permulaan berjaya, laksanakan fungsi panggil balik:

server.listen(3000, () => {
    console.log(&#39;服务器启动成功:http://localhost:3000&#39;)
})

Jika perkhidmatan gagal dimulakan. contohnya, port telah diduduki , ralat akan dilaporkan terus dalam konsol dan fungsi panggil balik seterusnya tidak akan dilaksanakan lagi.

Memperkenalkan dua lagi beban berlebihan, yang tidak banyak digunakan.

Salah satunya ialah tidak menyatakan nombor port, dalam keadaan ini sistem pengendalian akan memberikan nombor port yang tersedia secara rawak. Selepas perkhidmatan dimulakan dengan jayanya, anda boleh mendapatkan nombor port yang ditetapkan melalui atribut server.address().port:

server.listen(() => {
    const port = server.address().port
    console.log(port)
    console.log(&#39;服务器启动成功:http://localhost:&#39;, port)
})

Cuba:

Pembelajaran modul Node http: bercakap tentang penggunaan asas

Salah satunya ialah Nyatakan nama hos untuk mendengar.

Apabila host tidak dinyatakan, lalai ialah 0.0.0.0 (IPv4) atau :: (IPv6 menyokong akses daripada semua hos dalam rangkaian ).

Jika ditetapkan kepada locolhost atau 127.0.0.1, ia hanya boleh diakses oleh hos anda sendiri.

server.listen(3000, &#39;localhost&#39;, () => {
    console.log(&#39;服务器启动成功:http://localhost:&#39;, port)
})

Ringkasan

Kami telah memperkenalkan penggunaan asas modul http, terutamanya menggunakan createServer untuk mencipta perkhidmatan, dan kemudian memanggil kaedah listen untuk memulakan perkhidmatan dan dengar sambungan. createServer menerima fungsi panggil balik untuk memproses permintaan tertentu untuk menulis perkhidmatan web terutamanya menggunakan dua parameter fungsi panggil balik, request dan response, yang akan diperkenalkan secara terperinci kemudian.

Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!

Atas ialah kandungan terperinci Pembelajaran modul Node http: bercakap tentang penggunaan asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam