Search code examples
phprestapisymfonyfosrestbundle

Symfony 4 implement REST API


I'm implementing a simple REST API in my Symfony 4 project. When I test the getArticle() function with Postman this is the error:

The controller must return a response (Object(FOS\RestBundle\View\View) given).

With a var_dump($articles) content is displayed as expected so I guess the problem could be the FOSRestBundle but I don't know other ways to do this job.

class ArticleController extends FOSRestController
{

/**
 * Retrieves an Article resource
 * @Rest\Get("/articles/{id}")
 */
public function getArticle(int $articleId): View
 {
    $em = $this->getDoctrine()->getManager();
    $article = $em->getRepository(Article::class)->findBy(array('id' => $articleId));

    // In case our GET was a success we need to return a 200 HTTP OK response with the request object
    return View::create($article, Response::HTTP_OK);
 }
}

Solution

  • I've found a solution by myself returning a HttpFoundation\Response, it might be helpful to someone.

    /**
     * Lists all Articles.
     * @FOSRest\Get("/articles")
     */
    public function getArticles(Request $request): Response
    {
        $em = $this->getDoctrine()->getManager();
        $articles = $em->getRepository(Article::class)->findAll();
    
        return new Response($this->json($articles), Response::HTTP_OK);
    }