falcon-1.1.0源码笔记II
add_route(self, uri_template, resource, *args, **kwargs)
添加路由,这个方法的参数,uri_template就是路由的路径,resource是处理请求的responder的类的实例,一般responder是on_get,on_post等方法
具体的实现方法:
先判断uri_template是否格式是否规范(必须是string格式,以‘/’开头,且不能包含’//‘)
通过routing中的create_http_method_map方法,获得method_map(dict类型)
- 如果http_method在resource中有定义,就在method_map中添加相应的键值对,格式{‘GET’: ‘on_get()’}
- 对于OPTIONS方法,如果resource中没有定义,则生成一个默认的格式
- 其余的未定义方法,统一生成method_not_allowed格式
- 生成方法都在responder.py中有定义
通过_router.add_route将生成的method_map与uri_template,resource一起添加到new_node - 具体方法在routing CompileRouter中(待补充)