반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[Python] 3/17 | 파이썬에서 웹서버 사용(서버실행, get과 post방식 사용) 본문
데이터 엔지니어링 정복/Python
[Python] 3/17 | 파이썬에서 웹서버 사용(서버실행, get과 post방식 사용)
eeaarrtthh 2021. 3. 17. 10:22728x90
반응형
1. 파이썬에서 웹서버 사용
더보기
cmd에서 아래 명령어 입력
그리고 웹브라우저에서 localhost:8080을 검색하면 서버안에 디렉터리들이 보인다.
서버를 조작하는 라이브러리는
SimpleHTTPRequestHandler
BaseHTTPRequestHandler
이다.
서버실행하기
from http.server import HTTPServer, SimpleHTTPRequestHandler
httpd = HTTPServer( ('127.0.0.1', 8080), SimpleHTTPRequestHandler )
print( '서버시작' )
httpd.serve_forever()
print( '서버종료' )
서버시작
http://localhost:8080 을 브라우저에 입력하면 아래와 같이 pydev의 파이썬 프로젝트 src의 디렉터리가 보인다.
만약 현재 8080포트를 사용중이라면 다른 포트로 변경해준다. 아무거나 8081등 과 같이
서버에서 get과 post방식 사용
from http.server import HTTPServer, BaseHTTPRequestHandler
class MyHTTPRequestHandler( BaseHTTPRequestHandler ):
def do_GET(self):
print( 'get방식 요청' )
def do_POST(self):
print( 'post방식 요청' )
#자바에서 public static void main() 메소드와 같다.
if __name__ == '__main__':
httpd = HTTPServer( ('127.0.0.1', 8080), MyHTTPRequestHandler )
print( 'Server Start' )
httpd.serve_forever()
print( 'Server End' )
Server Start
get방식
from http.server import HTTPServer, BaseHTTPRequestHandler
class MyHTTPRequestHandler( BaseHTTPRequestHandler ):
def do_GET(self):
print( 'get방식 요청' )
self.send_response( 200 )
self.send_header( 'Content-type', 'text/html; charset=utf-8' )
self.end_headers()
html='''
<!doctype html>
<html lang="ko">
<head>
</head>
<body>
Hello Python
</body>
</html>
'''
self.wfile.write( html.encode( 'utf-8' ) )
def do_POST(self):
print( 'post방식 요청' )
#자바에서 public static void main() 메소드와 같다.
if __name__ == '__main__':
httpd = HTTPServer( ('127.0.0.1', 8081), MyHTTPRequestHandler )
print( 'Server Start' )
httpd.serve_forever()
print( 'Server End' )
Server Start
get방식 요청
127.0.0.1 - - [17/Mar/2021 09:45:05] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [17/Mar/2021 09:45:05] "GET /favicon.ico HTTP/1.1" 200 -
get방식 요청
전송데이터 메서드화 하기
보통 전송데이터를 메서드화해서 사용한다.
from http.server import HTTPServer, BaseHTTPRequestHandler
class MyHTTPRequestHandler( BaseHTTPRequestHandler ):
def do_GET(self):
print( 'get방식 요청' )
self.send_response( 200 )
self.send_header( 'Content-type', 'text/html; charset=utf-8' )
self.end_headers()
self.send_body1()
#전송 데이터 메서드화
def send_body1(self):
html='''
<!doctype html>
<html lang="ko">
<head>
</head>
<body>
Hello Python
</body>
</html>
'''
self.wfile.write( html.encode( 'utf-8' ) )
def do_POST(self):
print( 'post방식 요청' )
#자바에서 public static void main() 메소드와 같다.
if __name__ == '__main__':
httpd = HTTPServer( ('127.0.0.1', 8081), MyHTTPRequestHandler )
print( 'Server Start' )
httpd.serve_forever()
print( 'Server End' )
한글을 집어넣고 보내보자.
from http.server import HTTPServer, BaseHTTPRequestHandler
class MyHTTPRequestHandler( BaseHTTPRequestHandler ):
def do_GET(self):
print( 'get방식 요청' )
self.send_response( 200 )
self.send_header( 'Content-type', 'text/html; charset=utf-8' )
self.end_headers()
self.send_body1()
#전송 데이터 메서드화
def send_body1(self):
html='''
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8" />
</head>
<body>
Hello Python, 안녕 난 파이썬
</body>
</html>
'''
self.wfile.write( html.encode( 'utf-8' ) )
def do_POST(self):
print( 'post방식 요청' )
#자바에서 public static void main() 메소드와 같다.
if __name__ == '__main__':
httpd = HTTPServer( ('127.0.0.1', 8081), MyHTTPRequestHandler )
print( 'Server Start' )
httpd.serve_forever()
print( 'Server End' )
데이터 쿼리 출력하기
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import urlparse
class MyHTTPRequestHandler( BaseHTTPRequestHandler ):
def do_GET(self):
print( 'get방식 요청' )
self.send_response( 200 )
self.send_header( 'Content-type', 'text/html; charset=utf-8' )
self.end_headers()
print( self.path )
parts = urlparse( self.path )
keyword, value = parts.query.split( '=', 1)
print( keyword, value )
self.send_body1()
#전송 데이터 메서드화
def send_body1(self):
html='''
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8" />
</head>
<body>
Hello Python, 안녕 난 파이썬
</body>
</html>
'''
self.wfile.write( html.encode( 'utf-8' ) )
def do_POST(self):
print( 'post방식 요청' )
#자바에서 public static void main() 메소드와 같다.
if __name__ == '__main__':
httpd = HTTPServer( ('127.0.0.1', 8081), MyHTTPRequestHandler )
print( 'Server Start' )
httpd.serve_forever()
print( 'Server End' )
쿼리 데이터별로 실행되는 html문서 나누기
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import urlparse
class MyHTTPRequestHandler( BaseHTTPRequestHandler ):
def do_GET(self):
print( 'get방식 요청' )
self.send_response( 200 )
self.send_header( 'Content-type', 'text/html; charset=utf-8' )
self.end_headers()
print( self.path )
parts = urlparse( self.path )
keyword, value = parts.query.split( '=', 1)
print( keyword, value )
if value == 'value1' :
self.send_body1()
elif value == 'value2':
self.send_body2()
else :
pass
#전송 데이터 메서드화
def send_body1(self):
html='''
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8" />
</head>
<body>
Hello Python, 안녕 난 파이썬1
</body>
</html>
'''
self.wfile.write( html.encode( 'utf-8' ) )
#전송 데이터 메서드화
def send_body2(self):
html='''
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8" />
</head>
<body>
Hello Python, 안녕 난 파이썬2
</body>
</html>
'''
self.wfile.write( html.encode( 'utf-8' ) )
def do_POST(self):
print( 'post방식 요청' )
#자바에서 public static void main() 메소드와 같다.
if __name__ == '__main__':
httpd = HTTPServer( ('127.0.0.1', 8081), MyHTTPRequestHandler )
print( 'Server Start' )
httpd.serve_forever()
print( 'Server End' )
728x90
반응형
'데이터 엔지니어링 정복 > Python' 카테고리의 다른 글
Comments