#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목기출문제 관련 질문2022-06-10 17:50
작성자
첨부파일캡처.JPG (78.8KB)

안녕하세요 기출문제를 풀던중 잘 모르겠어서 질문 드립니다. 문제는 첨부하겠습니다. 


잘 모르겠어서 수업때 받은 예제와 구글링을 통해서 문제를 풀었습니다.

수업에서 받은 예시코드에는 SimpleHTTPRequestHandler을 사용하더라고요, 근데 그렇게 되면 디렉토리를 가르키는 화면이 떠서 BaseHTTPRequestHandler를 사용했습니다. 

질문

1. 기출문제를 풀 때에 BaseHTTPRequestHandler를 사용해서 푸는게 적절한가요?

2. 리스트에 url에 추가된 값을 추가하고, 그 값을 HTML에 추가하는 형태로 했는데, 적절한 방법인가요? list를 HTML에 쓸 수 있는 방법이 따로 있나요?

3. 인코딩을 하지 않으면 TypeError: A Bytes-Like Object Is Required, Not ‘Str’ 이런 오류가 떠서 인코딩을 했는데, 이렇게 하는게 적절한 방법인가요?

4. BaseHTTPRequestHandler에 적힌 do_GET()함수를 읽어봤으나 이 함수가 어떤 역할을 하는지 잘 모르겠습니다. 음... 수업에 나온 예제코드를 통해서 구현을 잘 못하겠어서 구글링을 통해서 적은거라 이 코드가 왜 실행되는지 조차 모르겠습니다. 설명해주시거나 참고할만한 링크 걸어주신 다면 감사하겠습니다. 

  


긴질문인데 답변해주신다면 감사하겠습니다. 나름 구글링한다고 했는데 잘 모르겠습니다... 

추가적으로 공부할만한 링크 걸어주신다면 감사하겠습니다.

from http.server import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 8080

# This class will handle any incoming request from
# a browser
class myHandler(BaseHTTPRequestHandler):
    fruit = []
    # Handler for the GET requests
    def do_GET(self):
        print   ('Get request received')
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
       
        #HTTP Requests: 를 출력하게 하는 코드
        text = "HTTP Requests: "
        text_byte = text.encode('utf-8')
        self.wfile.write(text_byte) #인코딩오류(? 정확히 모르겠음, 구글링함) 떠서 추가한 코드
       
        #url로 들어온 request를 list에 저장
        self.fruit.append(self.path.strip("/"))
       

        for i in range(len(self.fruit)):    #l에 저장된 요소들을 추출
            text = self.fruit[i] +" "
            text_byte = text.encode('utf-8')
            self.wfile.write(text_byte) #인코딩오류(? 정확히 모르겠음, 구글링함) 떠서 추가한 코드
               
        print(self.fruit)
        return

try:
    # Create a web server and define the handler to manage the
    # incoming request
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print ('Started httpserver on port ' , PORT_NUMBER)

    # Wait forever for incoming http requests
    server.serve_forever()

except KeyboardInterrupt:
    print ('^C received, shutting down the web server')
    server.socket.close()
 
댓글
이전[re]기말고사 문의 Level 102022-06-11
다음[re]기출문제 관련 질문2022-06-11