在 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 注释并重新定义您需要的一切。
我正在为我在 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 注释并重新定义您需要的一切。