tsc*_*erg 6 rest jsonschema slim
我正在使用Justinrainbow的Slim v3和json模式验证器作为我的API。我想做的就是无法上班的是:
我无法做到的是:
# inside middleware:
$requestbody = $request->getBody();
$requestobject = json_decode($requestbody);
# validation and modification of $requestobject takes place here
$request->getBody()->write(json_encode($requestobject));
$request->reparseBody();
return $next($request, $response);
Run Code Online (Sandbox Code Playgroud)
从那时起,请求主体为null
。我究竟做错了什么?我相当确定我修改Slim对象的方式有问题,因为当我手动尝试时它也无法正常工作$request->getBody()->write('{"some": "content"}')
。
解决方案是withParsedBody()
:
# inside middleware:
$requestbody = $request->getBody();
$requestobject = json_decode($requestbody);
# validation and modification of $requestobject takes place here
$request = $request->withParsedBody($requestobject);
return $next($request, $response);
Run Code Online (Sandbox Code Playgroud)
就像我需要的那样,它使用修改后的对象完全覆盖了请求正文。您要注意的是:
$request->getParsedBody()
如果我正确理解了源,那么该请求将把一个已解析的对象作为主体保存,并且在调用时将不被解析。$request->getParsedBody()
,如果主体是JSON,通常会得到一个关联数组,但是使用上面的代码片段,解析的主体将成为对象。希望该摘要对将来的用户有所帮助。
归档时间: |
|
查看次数: |
2155 次 |
最近记录: |