웹서버 프로그래밍을 작성할 때에는 보통 개발자가 직접 파이썬 라이브러리를 사용해서 웹 서버를 개발하기 보다는 웹 프레임워크를 사용해서 개발하는 경우가 대부분이다.
프레임워크는 개발자가 웹 서버 프로그램을 개발하기 쉽도록 저수준의 기능을 이미 만들어 놓은 프로그램으로, 웹 서버 개발자는 프레임워크를 활용하여 응용로직만 개발하면 되기 때문에 훨씬 효율적입니다.
하지만 파이썬의 웹 서버 라이브러리가 웹 프레임워크에 어떻게 사용되는지 등에 대한 기술을 파악할 필요가 있어 기본 개념과 동작원리 등을 알아보는 것이 좋다.
클래스명 | 주요기능 |
---|---|
HTTPServer | - 웹 서버를 만들기 위한 클래스로 서버 IP와 PORT를 바인딩함 |
- HTTPServer 객체 생성시, 핸들러 클래스가 반드시 필요함 | |
BaseHTTPRequestHandler | - 핸들러를 만들기위한 기반 클래스, HTTP프로토콜 처리 로직이 필요하다 |
- 이 클래스를 상속받아, 자신의 로직 처리를 담당하는 핸들러 클래스를 만든다. | |
SimpleHTTPRequestHandler | - BaseHTTPRequestHandler 클래스를 상속받아 만든 클래스 |
- GET과 HEAD 메소드 처리가 가능한 핸들러 클래스 | |
CGIHTTPRequestHandler | - SimpleHTTPRequestHandler 클래스를 상속받아 만든 클래스 |
- 추가적으로 POST 메소드와 CGI 처리가 가능한 핸들러 클래스 |
from http.server import HTTPServer, BaseHTTPRequestHandler
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response_only(200, 'OK')
self.send_header('Content-Type', 'text/plan')
self.end_headers()
self.wfile.write(b"Hello Wold")
if __name__ =='__main__':
server = HTTPServer(('', 8888), MyHandler)
print('Started WebServer on port 8888...')
print('Press ^c to quit webserver')
server.serve_forever()
결과 페이지 로는
위의 함수에 입력한 대로 Hello World가 출력되는것을 볼 수 있다.
터미널 화면에서는 웹서버가 8888번 포트에서 돌아간다는 메시지가 출력되고
컨트롤 + c 를 누르면 웹서버가 중지된다는 것까지 출력되는 것을 볼 수 있다.