본문 바로가기
웹(web)/백엔드-python

do_GET+ do_POST 예제1

by 바코94 2020. 7. 1.

localhost:8000으로 접속하면 다음과 같은 화면이 나오고

 

hello world를 쓴뒤 Post it 버튼을 누르면 다음과 같이 나타나게 하려면 어떻게 해야할까?

1. html string을 가지는 form 변수를 만든다.

form = '''<!DOCTYPE html>
<title>Message Board</title>
<form method="POST" action="http://localhost:8000/">
<textarea name="message"></textarea>
<br>
<button type="submit">Post it!</button>
</form>
'''

 

2. do_GET- form을 response로 준다. 

def do_GET(self):

  self.send_response(200)
  self.send_header('Content-type', 'text/html; charset=utf-8')
  self.end_headers()
  self.wfile.write(form.encode()) 

 

3. do_POST 부분

3.1. request의 entity body에 있는 message field를 가져온다. 

length = int(self.headers.get('Content-length', 0))
data = self.rfile.read(length).decode()
message = parse_qs(data)["message"][0]

 

3.2 헤더를 설정한다. text/plain은 텍스트 파일 기본값이다.

self.send_response(200)
self.send_header('Content-type', 'text/plain; charset=utf-8')
self.end_headers()

 

3.3 message를 인코딩해서 보낸다.

self.wfile.write(message.encode())

 

main부분은 HelloServer예제와 같다.

do_GET과 do_POST가 같은 핸들러안에 정의되는 것이 특징이다.

 

 

MIME 타입(https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types)

 

'웹(web) > 백엔드-python' 카테고리의 다른 글

JSON  (0) 2020.07.02
do_GET+ do_POST 예제2  (0) 2020.07.01
parse_qs(POST data parsing)  (0) 2020.07.01
EchoServer  (0) 2020.07.01
HelloServer  (0) 2020.07.01