Symfony пустые данные формы тела в запросе POST - PullRequest
0 голосов
/ 19 июня 2020

В последнее время я пытался создать приложение Symfony, но у меня возникли проблемы с отправкой запроса 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 пуста

{"attributes": {}, "запрос": {}, "запрос": {}, "сервер": {}, "файлы": {}, "файлы cookie": {}, "заголовки": {}}

И, очевидно, код выдает ошибку из-за этого

1 Ответ

0 голосов
/ 19 июня 2020

Если вы отправляете JSON, не используйте formData, а необработанный режим с Content-type: application/json header.

Если вам нужно использовать formData, используйте форму Symfony для использования $form->handleRequest($request)

...