美文网首页
web框架本质

web框架本质

作者: xin激流勇进 | 来源:发表于2017-12-25 15:45 被阅读0次

来个简单的socket服务端

#!/usr/bin/env python

import socket

def handle_request(client):
    buf = client.recv(1024)
    client.send("HTTP/1.1 200 OK\r\n\r\n".encode())
    client.send('<h1>Hollo,Boy</h1>'.encode())
    
    
def main():
    sock = socket.socket()
    sock.bind(('localhost',80))
    sock.listen(5)
    
    while True:
        connection, address = sock.accept()
        handle_request(connection)
        connection.close()
        
    
if __name__ == "__main__":
    main()

上述通过socket来实现了其本质,而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。应用程序则负责具体的逻辑处理。


python标准库提供的独立WSGI服务器称为wsgiref

WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。

from wsgiref.simple_server import make_server
 
 
def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]
 
 
if __name__ == '__main__':
    httpd = make_server('', 8000, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

自定义web框架

通过python标准库提供的wsgiref模块开发一个自己的Web框架

#!/usr/bin/env python
#coding:utf-8
from wsgiref.simple_server import make_server
 
def index():
    return ['index',]
 
def login():
    return ['login',]
 
def routers():
     
    urlpatterns = (
        ('/index/',index),
        ('/login/',login),
    )
     
    return urlpatterns
 
def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    url = environ['PATH_INFO']
    urlpatterns = routers()
    func = None
    for item in urlpatterns:
        if item[0] == url:
            func = item[1]
            break
    if func:
        return func()
    else:
        return [b'404 not found',]
     
if __name__ == '__main__':
    httpd = make_server('', 8000, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

相关文章

  • Web框架本质

    Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个so...

  • web框架本质

    Python web frameworkshttps://wiki.python.org/moin/WebFram...

  • web框架本质

    来个简单的socket服务端 上述通过socket来实现了其本质,而对于真实开发中的python web程序来说,...

  • web框架的本质

    所有的web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,这样我们就可以实现一个...

  • Tornado框架01-入门总概

    我们首先来谈谈web框架. web框架的本质其实就是socket服务端再加上业务逻辑处理, 比如像是Tornado...

  • Django框架的基本介绍和工具准备(一)

    一、Web应用框架----Django 事项注意点: web应用程序就是app、游戏、网站等之类的东西,本质就是一...

  • python全栈 part2 - 001 前端基础

    web框架本质 对于所有的Web应用, 本质上其实就是一个socket服务端,用户的浏览器其实是一个socket客...

  • Django基础:web框架

    一.web框架 1.web应用的本质 1.socket网络编程 架构:C/S架构 协议:TCP/UDP协议 传输层...

  • Django介绍 wep框架本质

    一 wep 框架的的本质 及自定义 wep 框架 Django是一个开放源代码的Web应用框架,由Python写成...

  • Python Web框架以及x-sendfile

    Python Web框架 Flask:轻量实用的Web框架 Tornado:Facebook的开源异步Web框架 ...

网友评论

      本文标题:web框架本质

      本文链接:https://www.haomeiwen.com/subject/rcmlgxtx.html