用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

实现类似flask路由框架

2021-08-17 作者: gaojiawei举报

[python]代码库

from webob import Response, Request
from wsgiref.simple_server import make_server
from webob.dec import wsgify
from webob.exc import HTTPNotFound
import logging
import re

class Router:
    ROUTERTABLE = []

    @classmethod
    def register(cls, pattern):
        def wrapper(handler):
            cls.ROUTERTABLE.append((re.compile(pattern), handler))
            return handler
        return wrapper

# http://xxx/python/class/student/001

@Router.register(r'/python$')
def pythonhandler(request:Request):
    return '<h1>magedu.com Python</h1>'

@Router.register(r'/.*$')
def indexhandler(request:Request):  # bytes,String,response
    return '<h1>magedu.com Index.html</h1>'



class App:
    _Router = Router
    @wsgify
    def __call__(self, request:Request):
        path = request.path
        for pattern, handler in self._Router.ROUTERTABLE:   #pattern是编译过的
            matcher = pattern.match(path)
            if matcher:   #匹配成功
                response = handler(request)
                return response

        raise HTTPNotFound('<h1>该网页被外星人劫持了</h1>')  #404处理


with make_server('0.0.0.0', 8000, App()) as httpd:    #创建server
    print("Serving on port 8000...")
    httpd.serve_forever()


网友评论    (发表评论)

共2 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...