Symfony3 api - 无法使用 FOSBundle 获取 React 应用和 return 传递的数据

Symfony3 api - unable to get data passed by react app and return it using FOSBundle

我正在制作简单的 symfony api 和 React 应用程序。我的 React 应用程序将 json 格式的数据发送到 symfony api。但是我无法访问正在发送的数据。

这是我的 React 应用程序组件中的函数 -

  createProduct (event) {
    event.preventDefault()
    if(this.state.name.length === 0 ){
      this.error = 'Name cannot be empty'
    }else if(this.state.price === 0){
      this.error = 'Price cannot be 0'
    }else if(this.state.price < 0 ){
      this.error = 'Price cannot be negative'
    }else {
      let data = []
      data['name'] = this.state.name
      data['price'] = this.state.price
      ProductActions.addProduct(data)
    }
  }

这是实际的 addProduct 操作 -

 addProduct (data) {
    console.log('made it')
    let request = {
      method: 'POST',
      url: 'http://127.0.0.1:8000/product/post',
      data: JSON.stringify(data),
      contentType: 'application/json'
    }
    $.ajax(request)
      .done(data => this.addProductSuccess(data))
      .fail(err => this.addProductFail(err))
  }

现在是 Symfony api - 这是负责创建新产品的操作

/**
     * Creates a new product entity.
     * @Rest\Post("/post")
     */
    function newAction(Request $request ) {

        $body = $request->getContent();
        $body = json_decode($body,true);
        var_dump($body);
        dump($body);
        $logger = $this->get('logger');
        $logger->error($request);
        //$productPrice = $body['price'];
        //$product = new Product($productName,$productPrice);
        //$em = $this->getDoctrine()->getManager();
        //$em->persist($product);
        //$em->flush();
        //$data['data'] = $product;
        $data['body'] = $body;
        return $data;
    }

如您所见,大部分代码都在注释中。原因是它不起作用。在这行代码之后,一切都中断了

$productPrice = $body['price'];

这是我收到的错误

Undefined index: price"

此代码运行良好,我能够轻松获取请求上下文中的数据,但我决定开始使用 FOSBundle,但现在它不起作用。

如您所见,有 var_dump($request)dump($request) 试图查看请求 sent.I 也如您所见,尝试了 returning请求我的反应 api 在那里查看它,但它不起作用,这是我得到的错误 -

Resources are not supported in serialized data

如果这很重要 - 我之前曾尝试 returning new View($data,{some response code}) 但是它给出了这个错误 -

Unknown key "request" for annotation "@FOS\RestBundle\Controller\Annotations\View

我不知道这是什么意思。它说 everything.If 我发送普通数组它会说 Unknown key '0' 并且我没有诸如 @View 之类的注释,老实说我不知道​​如何使用它们。

在尝试查看请求失败后,我使用了 $logger。这是实际发送的内容

POST /product/post HTTP/1.1 Accept: / Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.8 Connection: keep-alive Content-Length: 2 Content-Type: application/json Host: 127.0.0.1:8000 Origin: http://localhost:3000 Referer: http://localhost:3000/ User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36 X-Php-Ob-Level: 1 [] [] []

我无法以任何其他方式查看请求。

我看过教程建议使用 Symfony FormType 来处理提交,但问题是我没有前端部分,也没有首先创建要提交的表单。这个 symfony API 只是后端我不知道如何将数据从我的反应应用程序发送到 symfony api 如果我要使用 symfony 表单。

有人可以告诉我如何从请求中获取数据以及如何 return 因为 return new View({any data}, {some response code}) 给出了 Unknown key {whatever key I have sent} 吗?

[已解决(某种程度上)] - 在创建要传递给 symfony 的数据时 api 结果是出于某种原因我写了 [] 而不是 {} ,这导致了没有发送正确值的错误。

然而,这保留了问题的另一部分——如何使用@View。因为每当我尝试 return new View({some data}, {some response code}); 它都会抛出一个错误。