最近,我一直在尝试做一个Symfony应用程序,但是我遇到了与body进行POST请求的问题。
邮递员请求如下所示
我对它使用了form-data选项
<?php
namespace App\Controller;
use App\Entity\User;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Response;
use Psr\Log\LoggerInterface;
class UserController extends AbstractController
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
/**
* @Route("/user", name="addUser", methods={"POST"})
*/
public function addUser(Request $request): JsonResponse
{
$data = json_decode($request->getContent(), true);
$this->logger->info("hi");
$this->logger->info(json_encode($request));
$username = $data["username"];
$password = $data["password"];
if (empty($username) || empty($password)) {
throw new NotFoundHttpException('Expecting mandatory parameters!');
}
$this->accountRepository->saveAccount($username, $password );
$response = new JsonResponse(['status' => 'Account created!'], 201);
$response->headers->set('Content-Type', 'application/json');
$response->headers->set('Access-Control-Allow-Origin', '*');
return $response;
}
}
但$request varirable为空
{“属性”:{},“请求”:{},“查询”:{},“服务器”:{},“文件”:{},“Cookie”:{},“标头”:{}}
显然,代码会因此而出错
如果发送json,不要使用formData,而是使用带有content-type:application/json头的raw模式。
如果您需要使用formData,请使用Symfony表单用于use$form->handleRequest($request)。