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

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. Trong bài giảng này, chúng ta sẽ tìm hiểu cách tạo một server đơn giản bằng Python. Server là một phần quan trọng của môi trường lập trình web. Nó là nơi lưu trữ và xử lý các yêu cầu từ phía client và phản hồi lại với dữ liệu tương ứng. Bằng cách tạo server, chúng ta có thể phát triển các ứng dụng web, API và các dịch vụ trực tuyến khác.

1. Tạo một 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 BaseHTTPRequestHandlerHTTPServer 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 Python Tai azbook.org"
        # 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 Python Tai azbook.org"
        # 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', 8080)
# 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()

 

Bạn lưu đoạn code trên vào file có tên app.py. Sau đó sử dụng comand line để chạy file chương trình:

python app.py

 

Bạn mở trình duyệt web và truy cập http://127.0.0.1:8080 hoặc http://localhost:8080. Kết quả thi được:

Server python

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.