提问者:小点点

Symfony正文形式-POST请求中的数据为null


最近,我一直在尝试做一个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”:{},“标头”:{}}

显然,代码会因此而出错


共1个答案

匿名用户

如果发送json,不要使用formData,而是使用带有content-type:application/json头的raw模式。

如果您需要使用formData,请使用Symfony表单用于use$form->handleRequest($request)。