首页 > 编程语言 >python 实现简单的web功能

python 实现简单的web功能

时间:2024-04-15 11:47:23浏览次数:24  
标签:web HTTP 请求 python self server 简单 BaseHTTPRequestHandler http

BaseHTTPRequestHandler介绍

这是一个以TCPServer为基础开发的模块,可以在请求外层添加http协议报文,发送http协议。

基于BaseHTTPServer 的Http Server的处理流程:
1.HTTPServer绑定对应的应答类(BaseHTTPRequestHandler )
http_server = HTTPServer((’’, int(port)), ServerHTTP)
2.监听端口:
http_server.serve_forever()
serve_forever()方法使用select.select()循环监听请求,当接收到请求后调用
当监听到请求时,取出请求对象
3.应答:
创建新线程以连接对象(开始理解成请求对象)为参数实例化应答类:ServerHTTP()
应答类根据请求方式调用ServerHTTP.do_XXX处理方法

常用方法/属性:
BaseHTTPRequestHandler.path #包含的请求路径和GET请求的数据
BaseHTTPRequestHandler.command #请求类型GET、POST…
BaseHTTPRequestHandler.request_version #请求的协议类型HTTP/1.0、HTTP/1.1
BaseHTTPRequestHandler.headers #请求的头
BaseHTTPRequestHandler.responses #HTTP错误代码及对应错误信息的字典
BaseHTTPRequestHandler.handle() #用于处理某一连接对象的请求,调用handle_one_request方法处理
BaseHTTPRequestHandler.handle_one_request() #根据请求类型调用do_XXX()方法,XXX为请求类型
BaseHTTPRequestHandler.do_XXX() #处理请求
BaseHTTPRequestHandler.send_error() #发送并记录一个完整的错误回复到客户端,内部调用send_response()方法实现
BaseHTTPRequestHandler.send_response() #发送一个响应头并记录已接收的请求
BaseHTTPRequestHandler.send_header() #发送一个指定的HTTP头到输出流。 keyword 应该指定头关键字,value 指定它的值
BaseHTTPRequestHandler.end_headers() #发送一个空白行,标识发送HTTP头部结束
BaseHTTPRequestHandler.wfile #self.connection.makefile(‘rb’, self.wbufsize) self.wbufsize = -1 应答的HTTP文本流对象,可写入应答信息
BaseHTTPRequestHandler.rfile #self.connection.makefile(‘wb’, self.rbufsize) self.rbufsize = 0 请求的HTTP文本流对象,可读取请求信息

# coding:utf-8
try:
    #python2 
    from  BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler
except:
    #python3
     from http.server import BaseHTTPRequestHandler, HTTPServer

class CustomHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        path = self.path
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        # 根据路径返回不同的内容
        if self.path == '/':
            self.wfile.write(b'Hello, welcome to our custom server!')
        elif self.path == '/hello':
            self.wfile.write(b'Hello world!')
        else:
            self.wfile.write(b'Not Found')

def start_server(port):
    http_server = HTTPServer(('', int(port)), CustomHandler)
    http_server.serve_forever() 
    
if __name__ == "__main__":
    start_server(8000)

  

标签:web,HTTP,请求,python,self,server,简单,BaseHTTPRequestHandler,http
From: https://www.cnblogs.com/boye169/p/18135603

相关文章

  • C / C++ 文件简单混编 + 轻量级日志系统使用
    在项目工程里面,不一定全部是c或者c++文件,有时候是混合一起,这个时候如果使用makefile编译的话,就要考虑兼容两种类型的文件编译了;实战经验如下:根据自己的风格制作响应的打印和日志记录,makefile编写如下:CC=gccCPP=g++#文件夹路径ROOTPATH=.INCLUDE=-I./cfg/inc-I$(......
  • 使用Python生成二维码
    1、背景上一次我们介绍了什么是二维码,读过这篇文章以后,相信大家对二维码已经有了一定的认识,那么有没有想过如何自己动手生成二维码呢?二维码在我们的生活与工作中,都能够做什么呢?今天我们来探讨一下用Python如何生成二维码。2、使用哪些库Python具有丰富的第三方库,能够生成二维码......
  • python secrets 模块
    secrets说明secrets模块用于生成高度加密的随机数,适于管理密码、账户验证、安全凭据及机密数据。生成随机数secrets模块是操作系统提供的最安全地随机性来源。choice(sequence)从非空序列中返回一个安全的随机元素。importsecrets#假设我们有一个元素列表elements=......
  • Python 生成测试数据 - faker 模块
    Python生成测试数据-faker模块摘自:http://notes.zhengxinonly.com/posts/2023-09-04.htmlFaker是一个生成数据的Python库,Faker数据通常用于生成测试数据。初始化操作首先需要安装faker模块pipinstallfakerfaker.Faker()创建并初始化一个伪造的生成器,该伪造器......
  • python使用NVlabs/stylegan3生成图片和视频
    此项目只能随机生成图片,不能以图生图先把源码克隆到本地,https://github.com/NVlabs/stylegan3进入项目文件夹,激活虚拟环境condaenvcreate-fenvironment.ymlcondaactivatestylegan3访问https://pytorch.org/get-started/locally/,根据自己的环境选择在虚拟环境执行pi......
  • Python 超好用的几种 f-string 方式,你都会吗 ?
    Python超好用的几种f-string方式,你都会吗?f-string是Python3.6版本引入的一种字符串格式化方法,它允许我们将变量、表达式直接插入到字符串中。本文将介绍f-string的大部分使用方式,快来检查一下你是否全部都掌握了。基本用法f-string是Python中用于字符串格式化的语......
  • Web移动端布局
    逻辑像素和物理像素逻辑像素也叫『设备独立像素』,即CSS像素,例如,iPhone6的逻辑像素是375px物理像素是设备屏幕实际拥有的像素点,设备生产出来,像素就确定了,例如,iPhone6的物理像素是750px在iPhone6下,物理像素是逻辑像素的2倍,用『设备像素比』表示该值,即物理像素除以逻辑像素的值......
  • gitee基于webhooks实现前端简单自动化部署
    1.为什么采用自动化部署简而言之,程序员优秀传统:懒=>高级生产力.基于gitee进行的自动化部署,服务器环境为Ubuntu基于webhooks进行的自动化部署更加轻快便捷2.部署步骤1).服务器购买可以购买阿里云抢占式服务器进行实验,花费应该在一大洋以内,或者直接购买一年低配服务......
  • 搭建个人图书馆!一个简单的在线个人书库
    大家好,我是Java陈序员。今天,给大家介绍一个在线的个人图书管理系统,支持在线阅读。关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍talebook——一个基于Calibre的简单的个人图书管理系统,支持在线阅读。友情提醒:个......
  • ABP -Vnext框架一步一步入门落地教程——使用ABP -Vnext创建一个WEBAPI接口(二)
    人生需要指引,而复制是成功最快的方式,兄弟们让我们发车吧————代码大牛ljy开发主题:何谓开发应用服务端在官方开发教程这一段的内容叫做开发应用服务端,作为现在前后端分离的开发模式来说,一个应用就分为前端页面框架和后端API,页面框架调用WEBAPI实现业务就完事了。所以咱们今天......