0

我正在尝试通过 Json 将修改发送到我在 Symfony 5 中的项目,但我只收到错误响应,好像没有 Url,我没有插入任何 API 密钥或任何标题,我已经搜索了指南但我不能找到它:

用户控制器.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);
    }

用户存储库.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();
    }

在此处输入图像描述

至于 GET,我做对了,我得到了数据的答案。

4

1 回答 1

1

你的路径看起来不对。在控制器操作中,您将路由定义为:

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

add_user只是内部路由名称。postman 中的 url 应该是:

https://127.0.0.1:8000/user/

此外,由于您没有得到任何响应,因此甚至没有找到 404,我假设您现在没有运行 Web 服务器。如果你使用 Symfony CLI 工具,你可以symfony serve在你的项目目录中调用命令:来让 web 服务器运行。关闭终端窗口或重新启动计算机将停止 Web 服务器。

于 2020-02-01T06:21:33.527 回答