程式語言 - Python - v3.x - HTTP Status Code



參考資訊:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
https://stackoverflow.com/questions/37445901/how-to-return-http-303-from-python

server.py

from http.server import HTTPServer, BaseHTTPRequestHandler

class WebServerHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        r = self.path.split('/')
        self.send_response(int(r[-1]))
        self.send_header('Content-type', 'text/html')
        self.send_header('Location', 'http://www.example.com')
        self.end_headers()

    def do_POST(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.send_header('Location', '/')
        self.end_headers()

def main():
    try:
        port = 8080
        server = HTTPServer(('', port), WebServerHandler)
        print("Web server is running on port {}".format(port))
        server.serve_forever()

    except KeyboardInterrupt:
        print("^C entered, stopping web server...")
        server.socket.close()

if __name__ == '__main__':
    main()

client.py

import sys
import requests

response = requests.get('http://127.0.0.1:8080/{}'.format(sys.argv[1]))
print(f'status code: {response.status_code}')

測試

$ sudo python3 ./server.py&

$ sudo python3 ./client.py 300
    status code: 300

$ sudo python3 ./client.py 400
    status code: 400