openstack XXX

  • 时间:
  • 浏览:1
  • 来源:UU快3—全天最准大发快三

      map.connect('/messages',controller=a,action='index',conditions={'method':['GET']})

  问题:

  1)webob.dec.wsgify是webob为WSGI应用系统应用应用程序提供的好几个 多多多 装饰器,作用是将好几个 多多多 函数转再加好几个 多多多 WSGI应用。

    参考资料 http://tumblr.wachang.NET/post/38149417931/Python-paste-webob-3

    map.resource("message","messages",controller=a)  ,map.resource内控 定义了默认的匹配条件

    第好几个 多多多 参数message为 member_name(资源名),第好几个 参数messages为collection_name(资源集合名),一般定义资源集合名为资源名的复数,我这里随便取名

    member={'update_many':'POST','delete_many':'POST'}    定义了单个资源最好的最好的办法 update_many,其curl动作为POST,delete_many,其curl动作为POST

      匹配nexs_id 为17,controller 为other_controller,  parent_resource的作用为形成name_prefix = 'message_',具体作用不详,有待研究

  这里匹配结果中的id为某个具体资源id,这里乱取,后三条curl针对具体资源(id为12)的操作,前两条是针对整个资源集合的操作

      map.connect('/messages',controller=a,action='create',conditions={'method':['POST']})

    参考资料   http://blog.csdn.Net/networm3/article/details/86665000

  匹配条件3   

      map.connect('/messages/{id}',controller=a,action='delete',conditions={'method':['DELETE']})

    map.connect('name',"/{action}/{pid}",controller=a)

  参考资料:http://routes.readthedocs.org/en/latest/restful.html

  api服务是入口,主要把client端发送http请求映射到具体处置函数上,主要涉及好几个 多多多 模块:

    map.resource('type', 'types',controller=other_controller,

    map.resource('message', 'messages',controller=a,

                        collection={'search':'GET','create_many':'POST'},

                        member={'update_many':'POST','delete_many':'POST'})

分析:

     curl -X POST  http://localhost:50088/proj1/nex/17/types

    collection_name作为访问的路径名,且当那末传入参数controller时,controller=collection_name

  匹配条件4

   匹配条件2 

    匹配条件那末指定curl的动作,之后所有的动作(PUT,POST,GET,。。)都匹配,第好几个 curl请求,匹配的action 为failfunc,pid为test,之后系统应用应用程序那末定义failfunc函数,报错

  匹配条件5 

    map.resource('message', 'messages',controller=a,path_prefix='/{projectid}',

                    collection={'list_many':'GET','create_many':'POST'},

                    member={'update_many':'POST','delete_many':'POST'})

                           path_prefix = '{projectid}/%s/:%s_id' %('nex','nexs'))

  openstack中的nova-api分析:

  2)routes.middleware.RoutesMiddleware,将接受到的url,自动调用map.match()最好的最好的办法,将url进行路由匹配并将结果存入request请求的环境变量['wsgiorg.routing_args'],最总要调用其第好几个 多多多 参数给出的函数接口,即self.dispatch。

    在路由5的条件下,再加四根

  3)map.connect 及map.resource均用来建立路由匹配条件

  map.connect('/images',controller=a,action='search',conditions={'method':['GET']}) 

    指定path_prefix后,路径为path_prefix/collection_name

      map.connect('/messages/{id}',controller=a,action='update',conditions={'method':['PUT']})

                           parent_resource=dict(member_name='message',

    resource中的controller对象的类定义须要要有__call__,要不然,匹配后变为type(controller)为unicode,导致 不明,有待研究

  针对系统应用应用程序中的匹配条件1  

  匹配条件指定了curl的动作为GET ,访问路径为images  对应的action 为search

    map.resource("message","messages",controller=a) 等同于以下匹配条件:

      map.connect('/messages/{id}',controller=a,action='show',conditions={'method':['GET']})

                            collection_name='messages'),

    前两条是针对整个资源集合的操作,后三条是针对资源集合中某个固定资源的操作 

    collection={'search':'GET','create_many':'POST'}       定义了资源集合最好的最好的办法 search,其curl动作为GET,create_many,其curl动作为POST

    map.resource初始化时还可不不都可以指定curl访问路径的前缀路径,如匹配条件3及4那末指定时,默认为collection_name(资源集合名)

    map.resource除了默认的路由条件外,还可不不都可以额外的定义‘资源集合的最好的最好的办法’以及‘单个资源的最好的最好的办法’

  route 可不不都可以从url提取相应的参数,如controller,action机会其它用户当时人定义的变量

  当url传入的id暗含'.',会将'.'后的字符窜匹配为format,如输入的id 为 '12.hihi' ,匹配id='12', format='hihi'