【Phalapi2.0】 如何使用 source 通过 header 传参数

做接口服务时候。有些场景会使用header 来传递参数。 查看官网文档说明

 

数据来源 source
指定当前单个参数的数据来源,可以是post、get、cookie、server、request、header、或其他自定义来源。未指定时,默认为统一数据源。

目前支持的source与对应的数据源映射关系如下:

【Phalapi2.0】 如何使用 source 通过 header 传参数_第1张图片

 

本次我使用header 时 ,发现 一直校验失败。过程如下

1  ./config/app.php  里边  apiCommonRules 设置应用层统一参数

    'apiCommonRules' => array(
         //签名
         'sign' => array(
            'name' => 'sign', 'require' => true,"source"=>'header',
      ),
       
    ),

报错: 

【Phalapi2.0】 如何使用 source 通过 header 传参数_第2张图片

 

 排查过程: 

1   打开文件   ./vendor/phalapi/kernal/src/Request.php 

【Phalapi2.0】 如何使用 source 通过 header 传参数_第3张图片

打断点, 通过比对  $data 和 $rule   , 发现 大小写问题。

 【Phalapi2.0】 如何使用 source 通过 header 传参数_第4张图片

 

 查看底层代码

  ./vendor/phalapi/kernal/src/Request.php 

【Phalapi2.0】 如何使用 source 通过 header 传参数_第5张图片

 

 【Phalapi2.0】 如何使用 source 通过 header 传参数_第6张图片

 ./vendor/phalapi/kernal/src/Request/Parser.php 

【Phalapi2.0】 如何使用 source 通过 header 传参数_第7张图片

 

 发现。这是PHP 接收 header 时候。首字母都会是大写

 

 解决办法: 

  ./config/app.php  里边  name 值首字母改为大写  即可

  'apiCommonRules' => array(
        // //签名
        'sign' => array(
            'name' => 'Sign', 'require' => true,"source"=>'header',
        ),
    ),

验证: 

【Phalapi2.0】 如何使用 source 通过 header 传参数_第8张图片

成功 !

 

转载于:https://www.cnblogs.com/richerdyoung/p/8672724.html

你可能感兴趣的:(【Phalapi2.0】 如何使用 source 通过 header 传参数)