Skip to content

Commit cf1f385

Browse files
committedJul 27, 2020
Use XML for ReST API routing
1 parent cc8ff3f commit cf1f385

File tree

4 files changed

+36
-41
lines changed

4 files changed

+36
-41
lines changed
 

‎composer.json

-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
"matthiasnoback/symfony-config-test": "^4.0",
5858
"matthiasnoback/symfony-dependency-injection-test": "^4.0",
5959
"nelmio/api-doc-bundle": "^2.4",
60-
"sensio/framework-extra-bundle": "^5.5",
6160
"sonata-project/doctrine-orm-admin-bundle": "^3.18",
6261
"sonata-project/google-authenticator": "^1.0 || ^2.0",
6362
"symfony/browser-kit": "^4.4 || ^5.1",

‎src/Controller/Api/GroupController.php

-17
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
namespace Sonata\UserBundle\Controller\Api;
1515

1616
use FOS\RestBundle\Context\Context;
17-
use FOS\RestBundle\Controller\Annotations\Delete;
18-
use FOS\RestBundle\Controller\Annotations\Get;
19-
use FOS\RestBundle\Controller\Annotations\Post;
20-
use FOS\RestBundle\Controller\Annotations\Put;
2117
use FOS\RestBundle\Controller\Annotations\QueryParam;
2218
use FOS\RestBundle\Controller\Annotations\View;
2319
use FOS\RestBundle\Request\ParamFetcherInterface;
@@ -30,12 +26,9 @@
3026
use Symfony\Component\Form\FormInterface;
3127
use Symfony\Component\HttpFoundation\Request;
3228
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
33-
use Symfony\Component\Routing\Annotation\Route;
3429

3530
/**
3631
* @author Hugo Briand <briand@ekino.com>
37-
*
38-
* @Route(requirements={"_format": "json|xml|html"}, defaults={"_format": "json"})
3932
*/
4033
class GroupController
4134
{
@@ -67,8 +60,6 @@ public function __construct(GroupManagerInterface $groupManager, FormFactoryInte
6760
* output={"class"="Sonata\DatagridBundle\Pager\PagerInterface", "groups"={"sonata_api_read"}}
6861
* )
6962
*
70-
* @Get("/groups.{_format}", name="get_groups")
71-
*
7263
* @QueryParam(name="page", requirements="\d+", default="1", description="Page for groups list pagination (1-indexed)")
7364
* @QueryParam(name="count", requirements="\d+", default="10", description="Number of groups by page")
7465
* @QueryParam(name="orderBy", map=true, requirements="ASC|DESC", nullable=true, strict=true, description="Query groups order by clause (key is field, value is direction")
@@ -118,8 +109,6 @@ public function getGroupsAction(ParamFetcherInterface $paramFetcher)
118109
* }
119110
* )
120111
*
121-
* @Get("/group/{id}.{_format}", name="get_group")
122-
*
123112
* @View(serializerGroups={"sonata_api_read"}, serializerEnableMaxDepthChecks=true)
124113
*
125114
* @param $id
@@ -143,8 +132,6 @@ public function getGroupAction($id)
143132
* }
144133
* )
145134
*
146-
* @Post("/group.{_format}", name="post_group")
147-
*
148135
* @param Request $request A Symfony request
149136
*
150137
* @throws NotFoundHttpException
@@ -172,8 +159,6 @@ public function postGroupAction(Request $request)
172159
* }
173160
* )
174161
*
175-
* @Put("/group/{id}.{_format}", name="put_group")
176-
*
177162
* @param int $id Group identifier
178163
* @param Request $request A Symfony request
179164
*
@@ -200,8 +185,6 @@ public function putGroupAction($id, Request $request)
200185
* }
201186
* )
202187
*
203-
* @Delete("/group/{id}.{_format}", name="delete_group")
204-
*
205188
* @param int $id A Group identifier
206189
*
207190
* @throws NotFoundHttpException

‎src/Controller/Api/UserController.php

-21
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
namespace Sonata\UserBundle\Controller\Api;
1515

1616
use FOS\RestBundle\Context\Context;
17-
use FOS\RestBundle\Controller\Annotations\Delete;
18-
use FOS\RestBundle\Controller\Annotations\Get;
19-
use FOS\RestBundle\Controller\Annotations\Post;
20-
use FOS\RestBundle\Controller\Annotations\Put;
2117
use FOS\RestBundle\Controller\Annotations\QueryParam;
2218
use FOS\RestBundle\Controller\Annotations\View;
2319
use FOS\RestBundle\Request\ParamFetcherInterface;
@@ -32,12 +28,9 @@
3228
use Symfony\Component\Form\FormInterface;
3329
use Symfony\Component\HttpFoundation\Request;
3430
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
35-
use Symfony\Component\Routing\Annotation\Route;
3631

3732
/**
3833
* @author Hugo Briand <briand@ekino.com>
39-
*
40-
* @Route(requirements={"_format": "json|xml|html"}, defaults={"_format": "json"})
4134
*/
4235
class UserController
4336
{
@@ -71,8 +64,6 @@ public function __construct(UserManagerInterface $userManager, GroupManagerInter
7164
* output={"class"="Sonata\DatagridBundle\Pager\PagerInterface", "groups"={"sonata_api_read"}}
7265
* )
7366
*
74-
* @Get("/users.{_format}", name="get_users")
75-
*
7667
* @QueryParam(name="page", requirements="\d+", default="1", description="Page for users list pagination (1-indexed)")
7768
* @QueryParam(name="count", requirements="\d+", default="10", description="Number of users by page")
7869
* @QueryParam(name="orderBy", map=true, requirements="ASC|DESC", nullable=true, strict=true, description="Query users order by clause (key is field, value is direction")
@@ -122,8 +113,6 @@ public function getUsersAction(ParamFetcherInterface $paramFetcher)
122113
* }
123114
* )
124115
*
125-
* @Get("/user/(id}.{_format}", name="get_user")
126-
*
127116
* @View(serializerGroups={"sonata_api_read"}, serializerEnableMaxDepthChecks=true)
128117
*
129118
* @param $id
@@ -147,8 +136,6 @@ public function getUserAction($id)
147136
* }
148137
* )
149138
*
150-
* @Post("/user.{_format}", name="post_user")
151-
*
152139
* @param Request $request A Symfony request
153140
*
154141
* @throws NotFoundHttpException
@@ -176,8 +163,6 @@ public function postUserAction(Request $request)
176163
* }
177164
* )
178165
*
179-
* @Put("/user/(id}.{_format}", name="put_user")
180-
*
181166
* @param int $id User id
182167
* @param Request $request A Symfony request
183168
*
@@ -204,8 +189,6 @@ public function putUserAction($id, Request $request)
204189
* }
205190
* )
206191
*
207-
* @Delete("/user/(id}.{_format}", name="delete_user")
208-
*
209192
* @param int $id An User identifier
210193
*
211194
* @throws NotFoundHttpException
@@ -237,8 +220,6 @@ public function deleteUserAction($id)
237220
* }
238221
* )
239222
*
240-
* @Post("/user/(userId}/{groupId}.{_format}", name="post_user_group")
241-
*
242223
* @param int $userId A User identifier
243224
* @param int $groupId A Group identifier
244225
*
@@ -280,8 +261,6 @@ public function postUserGroupAction($userId, $groupId)
280261
* }
281262
* )
282263
*
283-
* @Delete("/user/(userId}/{groupId}.{_format}", name="delete_user_group")
284-
*
285264
* @param int $userId A User identifier
286265
* @param int $groupId A Group identifier
287266
*

‎src/Resources/config/routing/api.xml

+36-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,39 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<routes xmlns="http://symfony.com/schema/routing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
3-
<import resource="Sonata\UserBundle\Controller\Api\UserController" type="annotation" name-prefix="sonata_api_user_user_"/>
4-
<import resource="Sonata\UserBundle\Controller\Api\GroupController" type="annotation" name-prefix="sonata_api_user_group_"/>
3+
<route id="sonata_api_user_group_delete_group" path="/group/{id}.{_format}" methods="DELETE" controller="Sonata\UserBundle\Controller\Api\GroupController::deleteGroupAction" format="json">
4+
<requirement key="_format">json|xml|html</requirement>
5+
</route>
6+
<route id="sonata_api_user_group_get_group" path="/group/{id}.{_format}" methods="GET" controller="Sonata\UserBundle\Controller\Api\GroupController::getGroupAction" format="json">
7+
<requirement key="_format">json|xml|html</requirement>
8+
</route>
9+
<route id="sonata_api_user_group_get_groups" path="/groups.{_format}" methods="GET" controller="Sonata\UserBundle\Controller\Api\GroupController::getGroupsAction" format="json">
10+
<requirement key="_format">json|xml|html</requirement>
11+
</route>
12+
<route id="sonata_api_user_group_post_group" path="/group.{_format}" methods="POST" controller="Sonata\UserBundle\Controller\Api\GroupController::postGroupAction" format="json">
13+
<requirement key="_format">json|xml|html</requirement>
14+
</route>
15+
<route id="sonata_api_user_group_put_group" path="/group/{id}.{_format}" methods="PUT" controller="Sonata\UserBundle\Controller\Api\GroupController::putGroupAction" format="json">
16+
<requirement key="_format">json|xml|html</requirement>
17+
</route>
18+
<route id="sonata_api_user_user_delete_user" path="/user/(id}.{_format}" methods="DELETE" controller="Sonata\UserBundle\Controller\Api\UserController::deleteUserAction" format="json">
19+
<requirement key="_format">json|xml|html</requirement>
20+
</route>
21+
<route id="sonata_api_user_user_delete_user_group" path="/user/(userId}/{groupId}.{_format}" methods="DELETE" controller="Sonata\UserBundle\Controller\Api\UserController::deleteUserGroupAction" format="json">
22+
<requirement key="_format">json|xml|html</requirement>
23+
</route>
24+
<route id="sonata_api_user_user_get_user" path="/user/(id}.{_format}" methods="GET" controller="Sonata\UserBundle\Controller\Api\UserController::getUserAction" format="json">
25+
<requirement key="_format">json|xml|html</requirement>
26+
</route>
27+
<route id="sonata_api_user_user_get_users" path="/users.{_format}" methods="GET" controller="Sonata\UserBundle\Controller\Api\UserController::getUsersAction" format="json">
28+
<requirement key="_format">json|xml|html</requirement>
29+
</route>
30+
<route id="sonata_api_user_user_post_user" path="/user.{_format}" methods="POST" controller="Sonata\UserBundle\Controller\Api\UserController::postUsersAction" format="json">
31+
<requirement key="_format">json|xml|html</requirement>
32+
</route>
33+
<route id="sonata_api_user_user_post_user_group" path="/user/(userId}/{groupId}.{_format}" methods="POST" controller="Sonata\UserBundle\Controller\Api\UserController::postUserGroupAction" format="json">
34+
<requirement key="_format">json|xml|html</requirement>
35+
</route>
36+
<route id="sonata_api_user_user_put_user" path="/user/(id}.{_format}" methods="PUT" controller="Sonata\UserBundle\Controller\Api\UserController::putUsersAction" format="json">
37+
<requirement key="_format">json|xml|html</requirement>
38+
</route>
539
</routes>

0 commit comments

Comments
 (0)