首先看下api-paste.ini的配置
[pipeline:main]
pipeline = auth instance
[app:instance]
paste.app_factory = routers:app_factory
[filter:auth]
paste.filter_factory = middleware:Auth.factory
def app_factory(global_config, **local_config):
return Router()
该功能主要由Router类来实现
class Router(object):
def __init__(self):
self.mapper = routes.Mapper()
self.add_routes()
self._router = routes.middleware.RoutesMiddleware(self._dispatch,
self.mapper)
def add_routes(self):
controller = controllers.Controller()
self.mapper.connect("/instances",
controller=controller, action="create",
conditions=dict(method=["POST"]))
self.mapper.connect("/instances",
controller=controller, action="index",
conditions=dict(method=["GET"]))
self.mapper.connect("/instances/{instance_id}",
controller=controller, action="show",
conditions=dict(method=["GET"]))
self.mapper.connect("/instances/{instance_id}",
controller=controller, action="update",
conditions=dict(method=["PUT"]))
self.mapper.connect("/instances/{instance_id}",
controller=controller, action="delete",
conditions=dict(method=["DELETE"]))
add_routes()实现了url添加的功能
Mapper类的connetc方法实现了url的添加