在服务器目录里随便丢了个index.html,浏览器访问:
成功!
第二步,用python代码跑服务器
命令行一句话的事,用代码当然也很简单:
获取访问地址后,当然是根据后缀名区分请求类型并各自处理咯。
结合需求和逻辑,服务器需要依照先后顺序判断并处理以下几类:
1.请求的文件不存在时,抛回错误页面并提示错误原因;
2.请求指向某个数据接口时,执行指定的python脚本并返回结果;
3.请求指向某个文件时,返回该文件;
4.以上情况皆不符合,抛回错误页面并提示错误原因。
项目中对这些请求分别建立包含test和act两个方法的类并一次调用,类似于:
接下来就是实现每种请求的处理啦!以下几个是重点:
第五步,请求指定文件
前面已经拿到了请求文件的绝对地址,通过文件io方法即可判断目标文件是否存在。
若文件存在,则读取文件内容并写入请求文件对象(通过self.wfile获取),对终端来说即是返回了该文件。
html文件里通常会包含css、js、图片、音频等各种引用,但实际访问时浏览器会自动对其所有引用文件单独发起get请求,所以服务器这边无需特殊对待,当做数个独立的文件请求来处理就行。
但是要注意,如果地址是类似url?param1=value1¶m2=value2的形式,判断和返回文件内容时需要先把后面的参数部分截掉。代码如下:
假如用到了其他类型文件,从网上找到对应的mimetype加进去就好。
往文件夹里丢了张小图片,试着访问下:
再试试访问下包含这个文件的页面:
成功!
最后一行send_content方法的功能是返回纯文本作为请求结果,其实就是一个mimetype为text/html的文件输出:
附上示例脚本:
访问个空地址试一试:
成功!
至此,全部功能完成。鞠躬。