. HTTPServer객체 생성 시, 핸들러가 반드시 필요함
HTTPServer와 BaseHTTPRequestHandler 를 이용
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/plain')
self.end_headers()
self.wfile.write(b"Hello World")
if __name__ == '__main__':
# 서버의 ip, port, 핸들러를 인자로 하여, HttpServer객체를 생성한다.
server = HTTPServer(('',8888), MyHandler)
print("Started WebServer on port 8888......")
print("Press ^C to quit WebServer")
# 요청을 처리함
server.serve_forever()
별도의 코딩이 필요 없음
do_GET(), do_HEAD() 메소드가 정의되어 있음
$ python -m http.server 8888
미리 구현되어 있어서, 즉시 웹서버 실행이 가능함
do_POST()메소드가 정의되어 있고 CGI 웹서버 실행만 가능함
CGI 웹서버 실행시 –cgi 옵션을 이용
디폴트 포트번호는 8000
http.server –cgi 실행위치가 웹서버의 루트 디렉토리가 됨
$python -m http.server 8888 --cgi
$ chmod 755 ./cgi-bin/cgi_server.py
$ python -m http.server 8888 --cgi
#!/usr/bin/env python
import cgi
form = cgi.FieldStorage()
name = form.getvalue('name')
email = form.getvalue('email')
url = form.getvalue('url')
print('Content-Type: text/plain')
print()
print('Welcome... CGI Script')
print('name is ', name)
print('email is ', email)
print('url is ', url)
from urllib.request import urlopen
from urllib.parse import urlencode
url = 'http://127.0.0.1:8888/cgi-bin/cgi_server.py'
data = urlencode({
'name':'김윤미',
'email':'kym@naver.com',
'url':'http://www.naver.com'
})
postData = data.encode()
f = urlopen(url, postData)
print(f.read().decode('utf-8'))