FOS Rest Bundle - Controller必须返回Response对象,但它返回View

问题描述 投票:0回答:1

我正在尝试在symfony 4.2.3上设置FOS Rest Bundle。我正在学习本教程:

https://www.thinktocode.com/2018/03/26/symfony-4-rest-api-part-1-fosrestbundle/

安装和配置捆绑包:

//annotations.yaml
rest_controller:
    resource: ../../src/Controller/Rest/
    type: annotation
    prefix: /api

//fos_rest.yaml
fos_rest:
  view:
    view_response_listener:  true
  format_listener:
    rules:
      - { path: ^/api, prefer_extension: true, fallback_format: json, priorities: [ json ] }

当我调用我的ArticleController对象的postAction()时,它看起来像:

class ArticleController extends FOSRestController
{
/**
 * Creates an Article resource
 * @Rest\Post("/articles")
 * @param Request $request
 * @return View
 */
public function postArticle(Request $request): View
{
    $entityManager = $this->getDoctrine()->getManager();

    $article = new Article();

    $article->setTitle($request->get('title'));
    $article->setContent($request->get('content'));


    $articleCategory = $entityManager->getReference(ArticleCategory::class, $request->get('article_category'));
    $article->setArticleCategory($articleCategory);

    $article->setPublished($request->get('published'));

    $entityManager->persist($article);
    $entityManager->flush();

    // In case our POST was a success we need to return a 201 HTTP CREATED response
    return View::create($article, Response::HTTP_CREATED);
}

}

我收到错误消息(使用Postman测试):控制器必须返回“Symfony \ Component \ HttpFoundation \ Response”对象,但它返回了一个类型为FOS \ RestBundle \ View \ View的对象。

这是为什么?!它定义了postArticle()方法应该返回一个View对象而我正在这样做。

一个通知:我的类正在扩展FOSRestController类,不推荐使用它。我也试过扩展AbstractFOSRestController,但结果相同。

fosuserbundle symfony4
1个回答
0
投票

因此,由于某种原因,我的fos_rest.yaml文件不在包dir中,它在全局中,但在包的测试子目录中。当我将它移动到它所属的地方时,它开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.