zoukankan      html  css  js  c++  java
  • python简易web服务器学习笔记

    import BaseHTTPServer
    
    #-------------------------------------------------------------------------------
    
    class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
        '''Handle HTTP requests by returning a fixed 'page'.'''
    
        # Page to send back.
        Page = '''
    <html>
    <body>
    <p>Hello, web!</p>
    </body>
    </html>
    '''
        # Handle a GET request.
        def do_GET(self):
            self.send_response(200)
            self.send_header("Content-type", "text/html")
            self.send_header("Content-Length", str(len(self.Page)))
            self.end_headers()
            self.wfile.write(self.Page)
    
    #-------------------------------------------------------------------------------
    
    if __name__ == '__main__':
        serverAddress = ('', 8080)
        server = BaseHTTPServer.HTTPServer(serverAddress, RequestHandler)
        server.serve_forever()
    

    web服务器基本思想:

    1.等待用户连接我们的站点并发送一个http请求

    2.解析请求,

    3.计算出它所请求的

    4.获取数据(或动态生成)

    5.格式化数据为HTML

    6.返回数据

    步骤1,2,6可以用python标准库中的BaseHttpServer模块实现。HttpServer是一个该模块的一个子类。它创建并监听http socket,发送请求到一个处理程序

    库里面的BaseHTTPRequestHandler类负责解析传进来的HTTP请求,并判断请求包含的方法。如果方法是GET,类将调用do_GET方法。我们的类RequestHandler重写了该方法以动态生成一个简单的页面,文本页面存储在类级别变量中,我们将在发送给客户端200响应码,首部content-Type字段以告诉客户端将返回的数据解析为html,页面长度之后发送它,end_headers 方法调用 插入空行以分隔首部和页面本身。)

    wow,200响应码是什么东西,常见的响应码有这些

    “200”  :OK

    301  : move permanently  永久转移

    302  : found  暂时转移

    307 : temporary redirect 申明请求的资源临时性删除

    400 : bad request 错误请求

    401 : nauthorized  未认证

    403: forbidden 在其他地址发现了请求数据(禁止?)

    404  :not found 没有找到

    之后我们需要启动服务器。以一个元组定义了服务器地址:空字符串表示“在当前主机上运行”,8080标识了端口。于是以这个元组为参数创建一个实例,要求它一直运行(直到强退)

    在浏览器上127.0.0.1:8080就能看到它啦,访问之后还可以看到do_GET里输出的信息。wow

    参考资料:500 lines or less

  • 相关阅读:
    Zabbix常见问题手册
    Shell脚本常用语句
    ZABBIX定义宏变量
    Zabbix4.0系统配置事件通知
    c++ 八皇后问题(转载)
    (c++)数据结构顺序表编码练习
    JPA的事务注解@Transactional使用总结(转)
    小程序开发流程(java后端)
    连接远程数据库,得到数据插入本地表中
    php复制目录
  • 原文地址:https://www.cnblogs.com/bitch1319453/p/6576051.html
Copyright © 2011-2022 走看看