php laravel 空白,laravel踩坑记:空字符转null

场景:手头的项目需要对外提供API服务,需要对请求数据进行签名校验。提交接口的数据会有''空字符值存在,laravel的Illuminate\Foundation\Http\Request接收到参数后,会将空字符强制转换为NULL,导致签名校验通不过。

经过一番努力,找到幕后黑手。

Illuminate/Foundation/Http组件中有定义这个中间件。

vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php

namespace Illuminate\Foundation\Http\Middleware;

class ConvertEmptyStringsToNull extends TransformsRequest

{

/**

* Transform the given value.

*

* @param string $key

* @param mixed $value

* @return mixed

*/

protected function transform($key, $value)

{

return is_string($value) && $value === '' ? null : $value;

}

}

解决方法:

既然是中间件作祟,肯定在内核中有注册。找到内核注释该中间件就好。

app/Http/Kernel.php

class Kernel extends HttpKernel

{

/**

* The application's global HTTP middleware stack.

*

* These middleware are run during every request to your application.

*

* @var array

*/

protected $middleware = [

\App\Http\Middleware\CheckForMaintenanceMode::class,

\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,

\App\Http\Middleware\TrimStrings::class,

//\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,//会将''转化为null

\App\Http\Middleware\TrustProxies::class,

\Illuminate\Session\Middleware\StartSession::class,

];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值