【问题标题】:Creating Routing Paths using FosRestFundle in Symfony在 Symfony 中使用 FosRestFundle 创建路由路径
【发布时间】:2017-10-09 08:16:11
【问题描述】:

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

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

我的路由文件是这样配置的(我将只发布与 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}

我认为我已提供有关我的问题的所有信息,但如果缺少某些内容,请告诉我,我会更新我的问题。谢谢

【问题讨论】:

    标签: rest api symfony routing restful-url


    【解决方案1】:

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

    【讨论】:

    • 只添加@Route Annotation 并没有解决我的问题(它重复了我的路线)。但是您给了我修复它的提示,删除“@RouteResource("messages")" 就足够了。谢谢!
    • 仅仅添加@Route注解是不够的,你应该做@Route("/api/messages/creator/{username}")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2016-10-10
    • 2018-02-02
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    相关资源
    最近更新 更多