Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Pelayan `net/http` Go Mengendalikan Penyajian Fail Statik Tanpa Direktori Root Tetap?

Bagaimanakah Pelayan `net/http` Go Mengendalikan Penyajian Fail Statik Tanpa Direktori Root Tetap?

Patricia Arquette
Lepaskan: 2024-12-19 08:18:50
asal
757 orang telah melayarinya

How Does Go's `net/http` Server Handle Static File Serving Without a Fixed Root Directory?

Membuka Direktori "Root" dalam Pelayan Web Go

Dalam pelayan web net/http Go, konsep "root" tetap direktori untuk menyampaikan fail tiada. Sebaliknya, pengendali digunakan untuk membalas permintaan URL, memberikan lebih fleksibiliti dan kawalan ke atas penghantaran kandungan.

Pemetaan Pengendali

Pengendali ialah fungsi yang memproses permintaan HTTP dan menjana tindak balas yang sepadan. URL dikaitkan dengan pengendali menggunakan fungsi Handle() atau HandleFunc(). Apabila permintaan HTTP diterima, pelayan memadankan URL yang diminta dengan pengendali berdaftar untuk menentukan pengendali yang harus mengendalikan permintaan tersebut.

Fail Statik

Untuk menyampaikan fail statik , Go menyediakan fungsi FileServer(). Ia mengembalikan pengendali yang menyediakan fail daripada direktori "root" yang ditentukan. Direktori ini boleh ditentukan sebagai laluan mutlak atau relatif.

Laluan Mutlak

Jika laluan mutlak digunakan dengan FileServer(), direktori "root" adalah jelas .

Saudara mara Laluan

Laluan relatif, walau bagaimanapun, bergantung pada direktori kerja semasa, yang biasanya merupakan direktori dari mana aplikasi itu dimulakan. Contohnya:

http.Handle("/", http.FileServer(http.Dir("/tmp")))
Salin selepas log masuk

Ini menugaskan pengendali untuk menyampaikan fail daripada direktori "/tmp", dipetakan ke URL akar "/". Oleh itu, respons kepada "/mydoc.txt" akan menjadi fail "/tmp/mydoc.txt".

Pemetaan Kompleks

Senario pemetaan yang lebih kompleks boleh dicapai dengan fungsi StripPrefix(), yang mengubah suai laluan URL permintaan sebelum ia dihantar ke FileServer(). Ini membolehkan penyajian fail daripada direktori atau laluan yang berbeza daripada URL akar.

Contoh:

http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
Salin selepas log masuk

Persediaan ini menyediakan fail daripada "/tmp" di bawah laluan URL "/tmpfiles/" ; permintaan untuk "/tmpfiles/mydoc.txt" akan bertindak balas dengan fail "/tmp/mydoc.txt".

Atas ialah kandungan terperinci Bagaimanakah Pelayan `net/http` Go Mengendalikan Penyajian Fail Statik Tanpa Direktori Root Tetap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan