วิธีใช้ Python SimpleHTTPServer

How Use Python Simplehttpserver



งานหลักของเว็บเซิร์ฟเวอร์คือการจัดการคำขอ HTTP จากไคลเอนต์ มันรอคำขอ HTTP ที่มาจากที่อยู่ IP และหมายเลขพอร์ตเฉพาะ จัดการคำขอ และส่งการตอบกลับของลูกค้ากลับ Python ใช้ SimpleHTTPServer โมดูลเพื่อสร้างเว็บเซิร์ฟเวอร์ทันทีและให้บริการเนื้อหาของไฟล์จากเซิร์ฟเวอร์ สามารถใช้สำหรับการแชร์ไฟล์ได้เช่นกัน สำหรับสิ่งนี้ คุณต้องเปิดใช้งานโมดูลนี้ด้วยตำแหน่งของไฟล์ที่แชร์ได้ โมดูลนี้มาพร้อมกับล่าม Python คุณไม่จำเป็นต้องติดตั้ง เนื่องจากโมดูลนี้ถูกรวมเข้ากับ http.server โมดูลใน python3 ดังนั้นคุณต้องเรียกใช้ http.server เพื่อเรียกใช้เว็บเซิร์ฟเวอร์ใน python3 วิธีใช้เว็บเซิร์ฟเวอร์เพื่อจัดการคำขอ HTTP และแชร์ไฟล์ได้แสดงไว้ในบทช่วยสอนนี้

เรียกใช้เว็บเซิร์ฟเวอร์จากเทอร์มินัล

เรียกใช้คำสั่งต่อไปนี้เพื่อเรียกใช้เว็บเซิร์ฟเวอร์จากเทอร์มินัล หากไม่มีการกำหนดหมายเลขพอร์ตในคำสั่ง เว็บเซิร์ฟเวอร์จะเริ่มต้นที่พอร์ต 8000 ตามค่าเริ่มต้น







$ python3 -m http.เซิร์ฟเวอร์



ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากเว็บเซิร์ฟเวอร์เริ่มทำงานอย่างถูกต้อง CTRL+C ถูกกดเพื่อหยุดเซิร์ฟเวอร์




เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มเว็บเซิร์ฟเวอร์ที่พอร์ต 8080





$ python3 -m http.เซิร์ฟเวอร์ 8080

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากเว็บเซิร์ฟเวอร์เริ่มต้นที่พอร์ต 8080



เรียกใช้เว็บเซิร์ฟเวอร์โดยใช้สคริปต์ Python

เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างโฟลเดอร์ชื่อ เว็บ และไปที่โฟลเดอร์ ไฟล์สคริปต์และไฟล์ HTML ทั้งหมดของบทช่วยสอนนี้จะถูกสร้างขึ้นภายในโฟลเดอร์นี้

$ mkdir เว็บ

$ซีดีเว็บ

สร้างไฟล์ HTML ชื่อ testHTML.html ข้างใน เว็บ โฟลเดอร์ที่มีสคริปต์ต่อไปนี้ ไฟล์นี้จะให้บริการจากเว็บเซิร์ฟเวอร์ในภายหลัง

testHTML.html

< html >

< ศีรษะ >

< ชื่อ >

ทดสอบ Python Web Server

</ ชื่อ >

</ ศีรษะ >

< ร่างกาย >

< ศูนย์กลาง >

< img src='logo.jpeg' ทุกอย่าง='ไม่พบรูปภาพ'/>

< ชั่วโมง2 สไตล์='สี:เขียว'>ขอแสดงความยินดี! เว็บเซิร์ฟเวอร์ของคุณทำงานสำเร็จ</ ชั่วโมง2 >

< NS >เยี่ยม< ถึง href='www.linuxhint.com'>LinuxHint.com</ ถึง >สำหรับบทช่วยสอนเพิ่มเติมเกี่ยวกับ Python</ NS >

</ ศูนย์กลาง >

</ ร่างกาย >

</ html >

ตัวอย่างที่ 1: เรียกใช้เว็บเซิร์ฟเวอร์ในหมายเลขพอร์ตที่ระบุ

สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่อเรียกใช้เว็บเซิร์ฟเวอร์ที่พอร์ต 8008 http.server โมดูลถูกนำเข้าเพื่อเรียกใช้เว็บเซิร์ฟเวอร์และ SocketServer โมดูลได้รับการนำเข้าเพื่อจัดการคำขอ HTTP ที่มาจากพอร์ต 8080 วัตถุที่ชื่อ ตัวจัดการ ถูกสร้างขึ้นเพื่อจัดการกับคำขอ HTTP ตลอดไป() ฟังก์ชันถูกเรียกให้เรียกใช้เว็บเซิร์ฟเวอร์ ไม่มีการเพิ่มเงื่อนไขการยกเลิกในสคริปต์ ดังนั้น สคริปต์จะสร้างข้อผิดพลาดเมื่อผู้ใช้พยายามหยุดเซิร์ฟเวอร์

# นำเข้าโมดูลเซิร์ฟเวอร์

นำเข้าhttp.เซิร์ฟเวอร์

# นำเข้าโมดูล SocketServer

นำเข้าsocketserver


#กำหนดหมายเลขพอร์ต

ท่า= 8080

# สร้างวัตถุสำหรับจัดการคำขอ HTTP

ตัวจัดการ=http.เซิร์ฟเวอร์.SimpleHTTPRequestHandler


# เรียกใช้เซิร์ฟเวอร์ตลอดไปเพื่อจัดการคำขอ HTTP

กับซ็อกเก็ตเซิร์ฟเวอร์TCPServer(('',ท่า),ตัวจัดการ) เช่นhttpd:

พิมพ์('เว็บเซิร์ฟเวอร์กำลังทำงานที่ http://localhost:%s'%ท่า)

httpd.serve_forever()

เอาท์พุต

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ข้างต้น


รายการไฟล์และโฟลเดอร์ของตำแหน่งสคริปต์จะแสดงขึ้นหากมีการเรียกใช้ URL ต่อไปนี้จากเบราว์เซอร์

http://localhost:8080

หากผู้ใช้กด CTRL+C จากเทอร์มินัลหรือกดปุ่มหยุดจากตัวแก้ไข PyCharm ข้อความแสดงข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น ปัญหานี้ได้รับการแก้ไขแล้วในตัวอย่างถัดไปของบทช่วยสอนนี้

ตัวอย่างที่ 2: เรียกใช้เว็บเซิร์ฟเวอร์ด้วยหมายเลขพอร์ตที่กำหนดโดย command-line

สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่อเรียกใช้เว็บเซิร์ฟเวอร์ที่พอร์ตเฉพาะหากอาร์กิวเมนต์บรรทัดคำสั่งให้หมายเลขพอร์ต มิฉะนั้น 5000 จะถูกใช้เป็นพอร์ตเริ่มต้น sys โมดูลถูกนำเข้าในสคริปต์เพื่ออ่านค่าอาร์กิวเมนต์บรรทัดคำสั่ง ลองยกเว้น มีการเพิ่มบล็อกในสคริปต์เพื่อจัดการกับข้อผิดพลาดเมื่อผู้ใช้พยายามหยุดเซิร์ฟเวอร์ หากข้อยกเว้น KeyboardInterrupt ปรากฏขึ้นหลังจากเรียกใช้เซิร์ฟเวอร์ แสดงว่า ปิด() ฟังก์ชันจะถูกเรียกให้หยุดเว็บเซิร์ฟเวอร์

# นำเข้าโมดูลเซิร์ฟเวอร์

นำเข้าhttp.เซิร์ฟเวอร์

# นำเข้าโมดูล SocketServer

นำเข้าsocketserver

# นำเข้าโมดูล sys

นำเข้า sys


ลอง:

#กำหนดหมายเลขพอร์ต

ถ้า sys.argv[1:]:

ท่า= int(sys.argv[1])

อื่น:

ท่า= 5000

# ตั้งค่าที่อยู่ IP

ที่อยู่เซิฟเวอร์= ('127.0.0.1',ท่า)

# สร้างวัตถุสำหรับจัดการคำขอ HTTP

ตัวจัดการ=http.เซิร์ฟเวอร์.SimpleHTTPRequestHandler


# เรียกใช้เว็บเซิร์ฟเวอร์ตลอดไปเพื่อจัดการคำขอ HTTP

กับซ็อกเก็ตเซิร์ฟเวอร์TCPServer(('',ท่า),ตัวจัดการ) เช่นhttpd:

พิมพ์('เว็บเซิร์ฟเวอร์กำลังทำงานที่ http://localhost:%s'%ท่า)

httpd.serve_forever()

#หยุดเซิฟเวอร์

ยกเว้น แป้นพิมพ์ขัดจังหวะ:

httpd.เซิร์ฟเวอร์_close()

พิมพ์('เซิร์ฟเวอร์หยุดทำงาน')

เอาท์พุต

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ข้างต้นโดยไม่มีค่าอาร์กิวเมนต์บรรทัดคำสั่ง

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากเรียกใช้ไฟล์ HTML ที่สร้างขึ้นในขั้นตอนก่อนหน้าจากเว็บเซิร์ฟเวอร์

เปิดกล่องโต้ตอบการกำหนดค่าจากเมนูเรียกใช้ของตัวแก้ไข PyCharm เพื่อตั้งค่าอาร์กิวเมนต์บรรทัดคำสั่ง ฟิลด์พารามิเตอร์ใช้เพื่อตั้งค่าอาร์กิวเมนต์บรรทัดคำสั่ง และ 3000 ถูกตั้งค่าที่นี่เป็นค่าอาร์กิวเมนต์

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากคุณเรียกใช้สคริปต์อีกครั้งหลังจากตั้งค่าอาร์กิวเมนต์

ตัวอย่างที่ 3: เรียกใช้เว็บเซิร์ฟเวอร์ด้วยไฟล์ HTML

สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่อเรียกใช้เว็บเซิร์ฟเวอร์โดยกำหนดไฟล์ HTML สำหรับ URL ฐาน ชื่อโฮสต์และหมายเลขพอร์ตได้กำหนดไว้ที่จุดเริ่มต้นของสคริปต์ PythonServer คลาสได้กำหนดไว้ในสคริปต์เพื่อแสดงไฟล์ HTML ในเบราว์เซอร์เมื่อเว็บเซิร์ฟเวอร์เริ่มทำงาน

# นำเข้าโมดูลเซิร์ฟเวอร์

นำเข้าhttp.เซิร์ฟเวอร์


# ตั้งชื่อโฮสต์

เจ้าภาพ= 'โลคัลโฮสต์'

#กำหนดหมายเลขพอร์ต

ท่า= 4000


# กำหนดคลาสเพื่อแสดงหน้าดัชนีของเว็บเซิร์ฟเวอร์

ระดับPythonServer(http.เซิร์ฟเวอร์.SimpleHTTPRequestHandler):

defdo_GET(ตัวเอง):

ถ้า ตัวเอง.เส้นทาง == '/':

ตัวเอง.เส้นทาง = 'testHTML.html'

กลับhttp.เซิร์ฟเวอร์.SimpleHTTPRequestHandler.do_GET(ตัวเอง)


#ประกาศวัตถุของชั้นเรียน

เว็บเซิร์ฟเวอร์=http.เซิร์ฟเวอร์.HTTPServer((เจ้าภาพ,ท่า),PythonServer)


# พิมพ์ URL ของเว็บเซิร์ฟเวอร์

พิมพ์('เซิร์ฟเวอร์เริ่มต้น http://%s:%s'%(เจ้าภาพ,ท่า))


ลอง:

# เรียกใช้เว็บเซิร์ฟเวอร์

เว็บเซิร์ฟเวอร์.serve_forever()

ยกเว้น แป้นพิมพ์ขัดจังหวะ:

#หยุดเว็บเซิร์ฟเวอร์

เว็บเซิร์ฟเวอร์.เซิร์ฟเวอร์_close()

พิมพ์('เซิร์ฟเวอร์หยุดทำงาน')

เอาท์พุต

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นขณะเรียกใช้สคริปต์ด้านบน

หน้าต่อไปนี้จะปรากฏในเบราว์เซอร์หาก URL พื้นฐานของเบราว์เซอร์ของเว็บเซิร์ฟเวอร์ทำงาน

บทสรุป

วิธีต่างๆ ในการใช้งานเว็บเซิร์ฟเวอร์โดยใช้ http. เซิร์ฟเวอร์ โมดูลได้แสดงในบทช่วยสอนนี้เพื่อช่วยให้ผู้ใช้หลามสร้างเว็บเซิร์ฟเวอร์อย่างง่ายใน Python