PhalApi2.0 如何使用 source 通过 header 传参数 ?

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

数据来源 source

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

 

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

 

source  对应的数据源
post $_POST
get $_GET
cookie $_COOKIE
server $_SERVER
request $_REQUEST
header $_SERVER['HTTP_X']

 

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

过程如下:

 

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

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

 

2、报错: “非法请求:缺少必要参数sign”;非法请求:缺少必要参数sign

 

排查过程:

 

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

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

 

2、打断点, 通过比对 $data$rule , 发现 大小写问题。断点测试

 

3、查看底层代码:

路径一:./vendor/phalapi/kernal/src/Request.php

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

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

 

路径二:./vendor/phalapi/kernal/src/Request/Parser.php

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

 

得出一个结论:

发现,这是PHP 接收 header 时候,首字母都会是大写的原因;

 

解决办法:

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

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

 

再一次验证果然成功!如下:

Phalapi2.0 使用 source 通过 header 传参数成功

头像
  • ¥ 189.0元
  • 市场价:269.0元
  • ¥ 45.0元
  • 市场价:45.0元
  • ¥ 59.0元
  • 市场价:99.0元
  • ¥ 98.0元
  • 市场价:298.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: