Symfony 5: серверу не удалось отправить ответ: убедитесь, что серверная часть работает правильно - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь отправить модификацию через Json в мой проект в Symfony 5, но я получаю только сообщения об ошибках, как будто нет URL-адреса, я не вставил ни API-ключ, ни какой-либо заголовок, у меня есть искал руководство, но я не могу его найти:

UserController. php

<?php

namespace App\Controller;

use App\Entity\User;
use App\Repository\UserRepository;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class UserController
{
    private $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    /**
     * @Route("/user/", name="add_user", methods={"POST"})
     * @param Request $request
     * @return JsonResponse
     */
    public function add(Request $request): JsonResponse
    {
        $data = json_decode($request->getContent(), true);

        $firstName = $data['firstName'];
        $lastName = $data['lastName'];
        $email = $data['email'];
        $phoneNumber = $data['phoneNumber'];

        if (empty($firstName) || empty($lastName) || empty($email) || empty($phoneNumber)) {
            throw new NotFoundHttpException('Expecting mandatory parameters!');
        }

        $this->userRepository->saveUser($firstName, $lastName, $email, $phoneNumber);

        return new JsonResponse(['status' => 'User created!'], Response::HTTP_CREATED);
    }

UserRepository. php:

    public function saveUser($firstName, $lastName, $email, $phoneNumber)
    {
        $newUser = new User();

        $newUser
            ->setFirstName($firstName)
            ->setLastName($lastName)
            ->setEmail($email)
            ->setPhoneNumber($phoneNumber);

        $this->manager->persist($newUser);
        $this->manager->flush();
    }

enter image description here

Что касается GET, я сделал это правильно, и я получил ответ с данными.

1 Ответ

1 голос
/ 01 февраля 2020

Ваш путь выглядит неправильно. В действии контроллера вы определяете маршрут как:

    /**
     * @Route("/user/", name="add_user", methods={"POST"})
     * @param Request $request
     * @return JsonResponse
     */

add_user - это просто имя внутреннего маршрута. URL-адрес в почтальоне, вероятно, должен быть:

https://127.0.0.1:8000/user/

Кроме того, поскольку вы не получили никакого ответа, так что даже 404 не был найден, я предполагаю, что у вас сейчас не работает веб-сервер. Если вы используете CLI-инструмент Symfony, вы можете вызвать команду: symfony serve в каталоге вашего проекта, чтобы запустить веб-сервер. Закрытие окна терминала или перезагрузка компьютера приведет к остановке веб-сервера.

...