DANH MỤC: PYTHON NÂNG CAO

Bài 6: Khởi tạo server trong Python


Từ đầu series đến giờ chúng ta đều sử dụng python trên giao diện comandline, chắc các bạn đã chán rồi đúng không? Hôm nay chúng ta sẽ đổi gió và thử khởi tạo một con server http bằng Python nhé!

1, Tạo một con server đơn giản.

Đầu tiên để có thể khởi tạo được một con server thì bạn cần import module htttp.server của Python vào trong chương trình:

from http.server import BaseHTTPRequestHandler, HTTPServer

Và ở đây chúng ta cần sử dụng đến 2 object BaseHTTPRequestHandler, HTTPServer trong module http.server.

Tiếp đó chúng ta sẽ khai báo một class kế thừa từ class BaseHTTPRequestHandler của Python. Và khai báo thêm một phương thức do_GET() để xử lý khi có get Request gửi lên.

from http.server import BaseHTTPRequestHandler, HTTPServer
 
# HTTPRequestHandler class
class SimpleHTTP(BaseHTTPRequestHandler):
 
  # Nhận GET request gửi lên.
  def do_GET(self):
        # SET http status trả về
        self.send_response(200)
 
        # Thiết lập header trả về
        self.send_header('Content-type','text/html')
        self.end_headers()
        # Data
        message = "Hoc Lap Trinh Tai Toidicode.com"
        # Write data dưới dạng utf8
        self.wfile.write(bytes(message, "utf8"))
        return

Ngoài ra thì trong lớp BaseHTTPRequestHandler còn hỗ trợ chúng ta một số các thuộc tính và phương thức như sau:

Field Mô Tả
server_version Trả về version của server.
do_HEAD() Phương thức này cấu hình thông số head trả về.
do_GET() Phương thức xử lý khi có GET request gửi lên.
do_POST() Phương thức xử lý khi có POST request gửi lên.
client_address Thuộc tính này trả về tuple chứa host và port của server đang chạy.
command Thuộc tính này trả về kiểu của request gửi lên.
path Thuộc tính này trả về path của request gửi lên.
request_version Thuộc tính này trả về version của request hiện tại.
headers Thuộc tính này trả về tất tất cả những gì mà request gửi lên.
... ..... Các bạn có thể xem thêm tại đây.

Sau khi đã cấu hình xong thông số và các hành động xử lý. Giờ chúng ta sẽ sử dụng đến đối tượng HTTPServer để khởi chạy server.

from http.server import BaseHTTPRequestHandler, HTTPServer
 
# HTTPRequestHandler class
class SimpleHTTP(BaseHTTPRequestHandler):
 
  # Nhận GET request gửi lên.
  def do_GET(self):
        # SET http status trả về
        self.send_response(200)
 
        # Thiết lập header trả về
        self.send_header('Content-type','text/html')
        self.end_headers()
        # Data
        message = "Hoc Lap Trinh Tai Toidicode.com"
        # Write data dưới dạng utf8
        self.wfile.write(bytes(message, "utf8"))
        return

# cấu hình host và cổng port cho server
server_address = ('127.0.0.1', 8000)

# Khởi tạo server với thông số cấu hình ở trên.
httpd = HTTPServer(server_address, SimpleHTTP)

# Tiến hành chạy server
httpd.serve_forever()

Và bây giờ các bạn sử dụng comand line để chạy file chương trình và truy cập vào host và port đã cấu hình (của mình sẽ là 127.0.0.1:8000 tương đương với localhost:8000).

Python server

Kết quả thu được.

2, Lời kết.

Qua phần này mọi người về có thể tự thực hành thêm các chức năng khác cho server. Ví dụ như truy cập vào contact.html thì hiện ra contact, about.html thì hiện ra about,... (dùng thuộc tính path để làm). Hoặc viết nội dung ra file text rồi từ đó sử dụng đọc ghi file trong Python để render ra HTML.

Nguồn: Toidicode.com

Thông tin tác giả

Thanh Tai (thanhtaivtt)

Thanh Tai (thanhtaivtt)

The best way to learn is to teach

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia