在 Symfony 中使用 FosRestFundle 创建路由路径

Creating Routing Paths using FosRestFundle in Symfony

我正在为我在 Symfony 中的一个项目开发一个 Api,我想创建几个路由路径,如下所示:

/api/messages/{id}
/api/messages/creator/{username}
/api/messages/receiver/{username}

我的路由文件是这样配置的(我将post只是与api配置相关的信息):

routing.yml:

NelmioApiDocBundle:
    resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
    prefix: "/doc"

api:
    type: rest
    resource: "routing_api.yml"
    prefix: /api

routing_api.yml:

api_message:
    type: rest
    resource: AppBundle\Controller\ApiMessagesController

api_chats:
    type: rest
    resource: AppBundle\Controller\ApiChatController

还有我的ApiMessagesController:

<?php
namespace AppBundle\Controller;

use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\View\RouteRedirectView;
use FOS\RestBundle\Controller\Annotations\RouteResource;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;

/**
* Class ApiMessagesController
* @package AppBundle\Controller
*
* @RouteResource("messages")
*/
class ApiMessagesController extends FOSRestController{

    /**
    * Gets an individual Message
    *
    * @param int $id
    * @return mixed
    * @throws \Doctrine\ORM\NoResultException
    * @throws \Doctrine\ORM\NonUniqueResultException
    *
    * @ApiDoc(
    *     output="AppBundle\Entity\Message",
    *     statusCodes={
    *         200 = "Returned when successful",
    *         404 = "Return when not found"
    *     }
    * )
    */
    public function getAction($id){;
        return $this->get('app.message.manager')->findById($id);
    }

    /**
     * Gets all messages sent by each users
     *
     * @param int $id
     * @return mixed
     * @throws \Doctrine\ORM\NoResultException
     * @throws \Doctrine\ORM\NonUniqueResultException
     *
     * @ApiDoc(
     *     output="AppBundle\Entity\Message",
     *     statusCodes={
     *         200 = "Returned when successful",
     *         404 = "Return when not found"
     *     }
     * )
     */
    public function getCreatorAction($creator){
        return $this->get('app.message.manager')->findByCreator($creator);
    }


}

路线 /api/messages/{id} 按我的预期工作,但我现在真的很困惑如何定义路线 /api/messages/creator/{creator} 因为 Nelmio 告诉我我创建了这条路线 /api/messages/{creator}/creator/api/messages/creator/{username}

我想我已经提供了与我的问题有关的所有信息,但如果有遗漏请告诉我,我会更新我的问题。谢谢

如果您对 FOSRest 所做的 URL 不满意,您可以随时使用 @Route 注释并重新定义您需要的一切。