Symfony HttpFoundation转PSR7后PATCH请求体为空问题排查
PATCH请求转PSR7格式后验证失败问题
我发送PATCH请求并转换为PSR7格式后,使用OpenAPI PSR-7消息(HTTP请求/响应)验证器验证时失败,错误提示:Schema(or data) validation failed: All of the required rules must pass for {}
我怀疑问题出在请求本身或Symfony PSR桥接的使用方式上。
curl请求示例
curl -X PATCH "http://local.domain/api/v1/path/a60360dc-a32e-49a1-bf03-20bf8c2bbbdf" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"property":"value"}'
HttpFoundation转PSR7的代码
$psr17Factory = new \GuzzleHttp\Psr7\HttpFactory(); $psrHttpFactory = new \Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory); /** @var \Symfony\Component\HttpFoundation\Request $request */ $psrRequest = $psrHttpFactory->createRequest($request);
调试发现的异常情况
调试时观察到,PsrHttpFactory::createRequest()方法中的请求$body(对应v2.2.0版本代码第70行)内容显示正常,但转换完成后:
$psrRequest->getParsedBody()返回空数组$psrRequest->getBody()->getContents()返回空字符串
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

