• Pecan中api-paste.ini的解析


    在pecan中存在一个请求配置文件,定义服务启动程序app和过滤器filter,例如:

    [pipeline:main]
    pipeline =  request_id  sizelimit  api-server
    
    [filter:request_id]
    paste.filter_factory = oslo_middleware:RequestId.factory
    
    [filter:sizelimit]
    paste.filter_factory = oslo_middleware.sizelimit:RequestBodySizeLimiter.factory
    
    [app:api-server]
    paste.app_factory = caesarlinsa.api.app:app_factory

    在pipline中定义过滤规则,最后一个为app。如果顺序存在问题,则会报错如下:

    定义的过滤器,对request header或者requst_id等参数进行增删校验。在对app处理进行过滤时,需要定义一个filter_app,对请求参数校验。上面定义一个requst_id,在响应头中添加requst id, sizelimit对请求的长度进行校验,过长会抛出异常。但是有一点需要注意,在任何一个过滤器中调用response = req.get_response(self.application),都会获取api访问的响应。

    如果每个过滤器中都进行调用,整个流程走下来,会调用好几次api中接口。以下为在每个filter中加入获取响应并打印的过程,过滤器中获取的响应会存在stack中,在调用服务api时检查响应是否存在,如果存在,则不调用服务api,不存在则调用。该例中,在filter中获取两次,在服务api中并未进行调用,直接返回响应。

  • 相关阅读:
    java的基本数据类型有八种:
    BZOJ 1003 [ZJOI2006]物流运输trans
    BZOJ 1002 [FJOI2007]轮状病毒
    BZOJ 1001 [BeiJing2006]狼抓兔子
    FFT修正
    主席树修正
    COJ 0995 WZJ的数据结构(负五)区间操作
    COJ 1010 WZJ的数据结构(十) 线段树区间操作
    COJ 0999 WZJ的数据结构(负一)
    AC自动机修正
  • 原文地址:https://www.cnblogs.com/CaesarLinsa/p/10754130.html
Copyright © 2020-2023  润新知