学习 wsgi,突然萌生想法,web 框架不就是根究 url 匹配,然后调用相应的函数嘛。。。于是乎,学习一下 werkzeug,然后上手开始怼一个 web 框架。很简单,大部分其实都是调用 werkzeug 的东西。弄这个玩意主要是为了调侃,再加上巩固一下 wsgi 的知识。下一步准备学习学习 flask 框架的代码。顺便问一嘴,现在外面的 python 安全开发都需要什么技能?本人主要做信息安全这块,能日站,能撸代码。求大佬指点
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from werkzeug.routing import Map, Rule
from werkzeug.serving import run_simple
from werkzeug.wrappers import Response, Request
class tiny:
def __init__(self):
self.url_map: Map = Map([])
self.views = {}
def wsgi(self, environ, start_response):
request = Request(environ)
urls = self.url_map.bind_to_environ(environ)
rv = urls.dispatch(lambda e, v: self.views[e](request, **v))
return Response(rv, mimetype='text/plain')(environ, start_response)
def route(self, endpoint):
def inner(func):
self.url_map.add(Rule(endpoint, endpoint=func.__name__))
self.views = {func.__name__: func}
return func
return inner
def run(self, host='localhost', port=5000, **options):
return run_simple(host, port, self.wsgi, **options)
a = tiny()
@a.route("/1")
def index(request):
return 'Hello "%s"!' % request.args['a']
a.run()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.