Python에서 나만의 HTTP Server 만들기
1. PowerShell 혹은 CMD (명령 프롬프트)에서 IPv4 주소 확인하기
2. 아래 코드 입력하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
from http.server import HTTPServer, BaseHTTPRequestHandler
HOST = "0.0.0.0"
PORT = 9999
class MyHTTP(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(bytes("<html><body><h1>It is my HTTP Server!</h1></body></html>", "utf-8"))
server = HTTPServer((HOST, PORT), MyHTTP)
print("running")
print(server)
print(HOST)
server.serve_forever()
server.server_close()
print("stopped")
|
cs |
PORT를 9999로 입력한 이유는 PORT 번호는 임의로 1023보다 큰 숫자를 입력하면 되기 때문입니다.
3. IP주소 & 포트 입력 후 접속해보기
코드에서 입력한 HTML body가 잘 나오는 것을 확인할 수 있습니다.
HTTP Server를 이용한 파일 공유 등 다른 유용한 면을 알아보도록 하겠습니다.
4. 바탕화면에 임의 폴더 한 개를 만듭니다.
그리고 임의의 텍스트 파일을 몇 개 만듭니다.
5. cmd에서 server 실행하기
우선 cmd에서 새롭게 생성한 폴더 경로로 이동합니다.
그리고 위 이미지처럼 이동한 경로에서 "python -m http.server"를 입력하면 server를 실행할 수 있습니다.
크롬 도메인 창에 localhost:8000을 입력하고 접근하면, 이미지처럼 해당 경로에 저장된 파일들을 다운받고 공유할 수 있습니다.
6. 2번에서 작성한 코드에 POST 메소드 추가하기
2번에서 작성한 코드를 보면 GET 메소드만 구현되어 있습니다. 그렇기 때문에 아래 이미지처럼
"curl IP_ADDRESS:PORT -X POST" 명령어를 입력했을 때 Error가 발생합니다.
POST 메소드를 추가해보도록 합니다.
"do_POST" 메소드를 추가했습니다. 기본적으로, POST 메소드를 호출하면 현재 시각을 출력할 수 있도록 했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import time
from http.server import HTTPServer, BaseHTTPRequestHandler
HOST = "0.0.0.0"
PORT = 9999
class MyHTTP(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(bytes("<html><body><h1>It is my HTTP Server!</h1></body></html>", "utf-8"))
def do_POST(self):
self.send_response(200)
self.send_header("Content-type", "application/json")
self.end_headers()
date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
self.wfile.write(bytes('{"time": "' + date + '"}', "utf-8"))
server = HTTPServer((HOST, PORT), MyHTTP)
print("running")
print(server)
print(HOST)
server.serve_forever()
server.server_close()
print("stopped")
|
cs |
이제 다시 POST 메소드를 호출하고 테스트해봅시다!
네! POST를 호출하면 현재 시각을 잘 불러옵니다ㅎ
파이썬으로 간단히 HTTP Server 만드는 방법 알아봤습니다.
'공부 > 파이썬 Python' 카테고리의 다른 글
파이썬으로 3D 게임 만들기 (feat. Ursina) (0) | 2022.01.23 |
---|---|
Python 3D 플로팅 연습하기 (0) | 2022.01.04 |
Matplotlib 애니메이션으로 Linear Regression 표현하기 (0) | 2021.12.26 |
Python으로 캔들스틱 주가 시각화하기 (0) | 2021.12.21 |
Google Colab에서 오디오북 리더 만들기 (feat. Python) (3) | 2021.12.20 |
댓글