当我看不到 "dump()" 调用的输出时,如何调试 REST 请求?
How do I debug a REST request when I can't see the output of "dump()" calls?
我想调试发送到我的控制器方法的请求:
use FOS\RestBundle\Controller\Annotations as Rest;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class IteropController extends AbstractController
{
/**
* @Rest\Post("/api/getiterop", name="api_get_iterop")
* @Rest\RequestParam(name="sary", nullable=true)
*/
public function getIteropForm(Request $req)
{
$response = new Response();
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode(['prenom' => $req->request->get('prenom') , 'sary' => $req->files->get('sary') ? 'misy' : 'tsisy']));
dump($req->getContent());
return $response;
}
}
但是在运行时,我在浏览器开发工具的网络选项卡中得到(failed)net::ERR_FAILED
,并且在浏览器的控制台日志中出现 CORS 错误。
那么如何调试 Rest POST?
如果你想调试 PHP,通常最好的办法是安装并学习使用 Xdebug(没有什么比真正的 step-by-step 调试器更好)了。
或者您安装 Symfony Profiler (require profiler-pack
) 和 symfony/debug-bundle
(require symfony/debug-bundle
),这样您就可以在分析器中查看 dump()
调用的输出输出(您会在响应 header 中查找 X-Debug-Token-Link
header,其中包括 link 到探查器记录,dump()
的输出是在“调试”选项卡上)。
然而,对于 CORS 问题,PHP 调试器只会告诉您这么多。 Symfony 分析器可能更有用,因为它可以告诉您有关请求的更多信息。但您真正需要做的是检查响应 headers 以查看是否获得了您期望的所有 CORS headers。
此外,在某些情况下,浏览器会发送 pre-flight OPTIONS
请求来验证 CORS headers,如果您没有正确考虑这些,浏览器请求可能会失败,因为出色地。或者,如果您在请求中使用凭据,则根本不允许使用 *
作为来源。所以调试的第一步是检查那些请求和相应的响应headers.
我想调试发送到我的控制器方法的请求:
use FOS\RestBundle\Controller\Annotations as Rest;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class IteropController extends AbstractController
{
/**
* @Rest\Post("/api/getiterop", name="api_get_iterop")
* @Rest\RequestParam(name="sary", nullable=true)
*/
public function getIteropForm(Request $req)
{
$response = new Response();
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode(['prenom' => $req->request->get('prenom') , 'sary' => $req->files->get('sary') ? 'misy' : 'tsisy']));
dump($req->getContent());
return $response;
}
}
但是在运行时,我在浏览器开发工具的网络选项卡中得到(failed)net::ERR_FAILED
,并且在浏览器的控制台日志中出现 CORS 错误。
那么如何调试 Rest POST?
如果你想调试 PHP,通常最好的办法是安装并学习使用 Xdebug(没有什么比真正的 step-by-step 调试器更好)了。
或者您安装 Symfony Profiler (require profiler-pack
) 和 symfony/debug-bundle
(require symfony/debug-bundle
),这样您就可以在分析器中查看 dump()
调用的输出输出(您会在响应 header 中查找 X-Debug-Token-Link
header,其中包括 link 到探查器记录,dump()
的输出是在“调试”选项卡上)。
然而,对于 CORS 问题,PHP 调试器只会告诉您这么多。 Symfony 分析器可能更有用,因为它可以告诉您有关请求的更多信息。但您真正需要做的是检查响应 headers 以查看是否获得了您期望的所有 CORS headers。
此外,在某些情况下,浏览器会发送 pre-flight OPTIONS
请求来验证 CORS headers,如果您没有正确考虑这些,浏览器请求可能会失败,因为出色地。或者,如果您在请求中使用凭据,则根本不允许使用 *
作为来源。所以调试的第一步是检查那些请求和相应的响应headers.