当前位置: 首页 > 知识库问答 >
问题:

400坏请求Symfony 3带角

郑燕七
2023-03-14

我在想我做错了什么。我收到了400个错误的请求,试图通过角服务发送一个帖子请求。我有两个实体--Document和DocumentCategory(多对多关系)。我可以张贴文件本身(没有类别)没有问题。

createDocument(title, body, categories) {
    let document = {title: title, body: body, categories: categories};
    this._crudService.createDocument(document).subscribe(
        data => {
            return true;
        },
        error => {
            console.error("Error saving document! " + error);
            return Observable.throw(error);
        }
    );
} 
createDocument(document) {
    let headers = new Headers({'Content-Type': 'application/json'});
    let options = new RequestOptions({headers: headers});
    //let body = JSON.stringify(document);
    let body = document;
    return this.http.post
        ('http://localhost:8000/documents', body, headers);
}
public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
            ->add('title', TextType::class)
            ->add('body', TextType::class)
            //->add('categories', TextType::class)
            ->add('categories', EntityType::class, array(
                'class' => 'AppBundle:DocumentCategory',
                'multiple' => true,
                'expanded' => true,
                'by_reference' => false,
                'choice_label' => 'id',
            ))
    ;
}
/**
 * @ORM\ManyToMany(targetEntity="DocumentCategory", mappedBy="documents") 
 * @JMSSerializer\Expose
 */
private $categories;
/**
 * @ORM\ManyToMany(targetEntity="Document", inversedBy="categories")
 * @ORM\JoinTable(name="document_category_document")
 * @JMSSerializer\Expose
 */
private $documents;
{
  "title": "t",
  "body": "<p>b</p>",
  "categories": [
    {
      "id": 1,
      "name": "cat1",
      "documents": []
    },
    {
      "id": 2,
      "name": "cat2",
      "documents": []
    }
  ]
}

正如我所说,如果我删除类别,一切都可以工作。我想不通:(

编辑:当我试图将上面的json作为application/json发送时,Postman显示了这一点作为响应:

{
  "children": {
    "title": {},
    "body": {},
    "categories": {
      "errors": [
        "This value is not valid."
      ],
      "children": {
        "1": {},
        "2": {},
        "3": {},
        "4": {}
      }
    }
  }
}

共有1个答案

逄嘉熙
2023-03-14

过了一段时间,我终于成功了。这是我的结果,以防有人有simmilar问题。这不是最优雅的解决方案,我会试图找到一个更好的,但至少它是有效的。问题出在控制器上。现在post方法如下所示:

public function postAction(Request $request) { 
    $form = $this->createForm(DocumentType::class, null, [
        'csrf_protection' => false,
    ]);
    $form->submit($request->request->all());
    if (!$form->isValid()) {
        return $form;
    }

    $em = $this->getDoctrine()->getManager();
    $document = $form->getData();
    $categories = $request->request->get('categories'); 

    foreach ($categories as $categoryId) {
        $category = $em->getRepository('AppBundle:DocumentCategory')->find((int)$categoryId['id']);
        $category->addDocument($document);
        $document->addCategory($category);
        $em->persist($category);            
    }

    $em->persist($document);
    $em->flush();

    $routeOptions = [
        'id' => $document->getId(),
        '_format' => $request->get('_format'),
    ];

    return $this->routeRedirectView('get_document', $routeOptions, Response::HTTP_CREATED);
}

我的形式很简单:

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
            ->add('title', TextType::class)
            ->add('body', TextType::class)
    ;         
}
 类似资料:
  • 这是我用于网络调用的函数。 接口类 收到400个错误请求。 错误日志 任何帮助都将不胜感激。

  • 我有我的api在Django和Django REST框架(DRF)。 这是我的设置文件: 我得到了坏请求(400)错误: 我查看了Chrome的网络选项卡,我得到的是: 在React中,我得到: 问题是什么,错误背后的原因是什么?API正在工作,我以前没有这个错误。

  • 我正在尝试配置一个基于extjs作为前端和Spring作为后端的小应用程序。因此,为了从extjs与服务器通信,我们需要在存储区配置代理编写器。我的代理配置如下所示: 这是Spring控制器中的@Request estMmap: Tomcat每次回答“400错误请求”时都会使用描述“客户端发送的请求语法不正确”。 所以,但是如果我将代理类型更改为ajax并请求映射以获取POST请求,一切都可以正常

  • 当我添加ACDailyLine时,两个post方法的请求都变为4oo错误 为什么当我只放ACDailyH post方法时,一切正常,返回201请求。当我为AcDailyLine添加时,两者都返回400个错误请求。请帮忙,提前谢谢:) 在这里,当我调试该行时

  • 我试图通过LinkedIn API上的共享发布一个LinkedIn共享更新,使用PHP库LinkedIn-Client API。我已经成功地授权了该用户,并从该用户那里返回了访问令牌。我将该令牌与这个共享API调用一起使用。下面是我的代码: LinkedIn-Client API在内部使用Guzzle处理HTTP请求。我试图直接使用,而不使用,但是错误相同,没有成功。 致命错误:未捕获的异常“GU

  • 我们有一个公司范围的Nexus 3服务器 拥有我们自己的文物和 用作Maven Central和其他回购的代理。 开发人员使用两个存储库: maven针对所有已发布/稳定的工件发布版本策略“Release”和 版本策略为“快照”的所有快照工件的maven快照 这两个存储库都用于Gradle构建: 现在,当Gradle试图解决快照依赖关系时,它会询问releases存储库,Nexus会用 而构建失败