@@ -23,10 +23,12 @@ your `routes/api.php` file as follows:
2323use App\Http\Controllers\Api\V1\PostController;
2424use App\Http\Controllers\Api\V1\TagController;
2525use App\Http\Controllers\Api\V1\UserController;
26+ use LaravelJsonApi\Laravel\Facades\JsonApiRoute;
27+ use LaravelJsonApi\Laravel\Routing\ResourceRegistrar;
2628
2729JsonApiRoute::server('v1')
2830 ->prefix('v1')
29- ->resources(function ($server) {
31+ ->resources(function (ResourceRegistrar $server) {
3032 $server->resource('posts', PostController::class);
3133 $server->resource('tags', TagController::class);
3234 $server->resource('users', UserController::class);
@@ -57,32 +59,36 @@ routes. For example:
5759``` php
5860use App\Http\Controllers\Api\V1\PostController;
5961use App\Http\Controllers\Api\V1\TagController;
62+ use LaravelJsonApi\Laravel\Facades\JsonApiRoute;
63+ use LaravelJsonApi\Laravel\Routing\ResourceRegistrar;
6064
6165JsonApiRoute::server('v1')
6266 ->prefix('v1')
63- ->resources(function ($server) {
67+ ->resources(function (ResourceRegistrar $server) {
6468 $server->resource('posts', PostController::class);
65- $server->resources ('tags', TagController::class);
69+ $server->resource ('tags', TagController::class);
6670 });
6771```
6872
6973As controllers are optional, it is also possible to use the default
7074` JsonApiController ` . For example:
7175
7276``` php
77+ use LaravelJsonApi\Laravel\Facades\JsonApiRoute;
7378use LaravelJsonApi\Laravel\Http\Controllers\JsonApiController;
79+ use LaravelJsonApi\Laravel\Routing\ResourceRegistrar;
7480
7581JsonApiRoute::server('v1')
7682 ->prefix('v1')
77- ->resources(function ($server) {
83+ ->resources(function (ResourceRegistrar $server) {
7884 $server->resource('posts', JsonApiController::class);
79- $server->resources ('tags', JsonApiController::class);
85+ $server->resource ('tags', JsonApiController::class);
8086 });
8187```
8288
8389Both the above examples work if the ` $namespace ` property of your application's
8490` RouteServiceProvider ` is ** not** set. This is the case in a fresh installation
85- of a Laravel 8 application.
91+ of a Laravel >= 8 application.
8692
8793Traditionally, Laravel's route groups have allowed controller namespaces
8894to be set via groups. This works if the ` $namespace ` property on your
@@ -100,7 +106,7 @@ the `App\Http\Controllers\Api\V1` namespace:
100106JsonApiRoute::server('v1')
101107 ->prefix('v1')
102108 ->namespace('Api\V1')
103- ->resources(function ($server) {
109+ ->resources(function (ResourceRegistrar $server) {
104110 // Expects controller to be `App\Http\Api\V1\PostController`
105111 $server->resource('posts');
106112 });
@@ -117,7 +123,7 @@ controller name as the second argument to the `resource()` method:
117123JsonApiRoute::server('v1')
118124 ->prefix('v1')
119125 ->namespace('Api\V1')
120- ->resources(function ($server) {
126+ ->resources(function (ResourceRegistrar $server) {
121127 // Controller is `App\Http\Api\V1\BlogPostController`
122128 $server->resource('posts', 'BlogPostController');
123129 });
@@ -128,12 +134,14 @@ When using controller namespacing, if you want to use the generic
128134` resource() ` method. For example:
129135
130136``` php
137+ use LaravelJsonApi\Laravel\Facades\JsonApiRoute;
131138use LaravelJsonApi\Laravel\Http\Controllers\JsonApiController;
139+ use LaravelJsonApi\Laravel\Routing\ResourceRegistrar;
132140
133141JsonApiRoute::server('v1')
134142 ->prefix('v1')
135143 ->namespace('Api\V1')
136- ->resources(function ($server) {
144+ ->resources(function (ResourceRegistrar $server) {
137145 $server->resource('posts', '\\' . JsonApiController::class);
138146 });
139147```
@@ -146,7 +154,7 @@ For example:
146154``` php
147155JsonApiRoute::server('v1')
148156 ->domain('api.myapp.com')
149- ->resources(function ($server) {
157+ ->resources(function (ResourceRegistrar $server) {
150158 $server->resource('posts', PostController::class);
151159 $server->resource('tags', TagController::class);
152160 $server->resource('users', UserController::class);
@@ -158,7 +166,7 @@ Or if you had wildcard sub-domains:
158166``` php
159167JsonApiRoute::server('v1')
160168 ->domain('{account}.myapp.com')
161- ->resources(function ($server) {
169+ ->resources(function (ResourceRegistrar $server) {
162170 $server->resource('posts', PostController::class);
163171 $server->resource('tags', TagController::class);
164172 $server->resource('users', UserController::class);
@@ -181,7 +189,7 @@ In this example:
181189JsonApiRoute::server('v1')
182190 ->middleware('my-middleware1', 'my-middleware2')
183191 ->prefix('v1')
184- ->resources(function ($server) {
192+ ->resources(function (ResourceRegistrar $server) {
185193 $server->resource('posts', PostController::class);
186194 });
187195```
@@ -200,7 +208,7 @@ Route::middleware('my-middleware1')->group(function () {
200208 JsonApiRoute::server('v1')
201209 ->middleware('my-middleware2')
202210 ->prefix('v1')
203- ->resources(function ($server) {
211+ ->resources(function (ResourceRegistrar $server) {
204212 $server->resource('posts', PostController::class);
205213 });
206214});
@@ -225,7 +233,7 @@ In the following example, we override the default route name of `v1` to
225233JsonApiRoute::server('v1')
226234 ->name('api:v1')
227235 ->prefix('v1')
228- ->resources(function ($server) {
236+ ->resources(function (ResourceRegistrar $server) {
229237 $server->resource('posts', PostController::class);
230238 });
231239```
@@ -241,7 +249,7 @@ For example, the following registers routes for the `posts`, `tags` and
241249``` php
242250JsonApiRoute::server('v1')
243251 ->prefix('v1')
244- ->resources(function ($server) {
252+ ->resources(function (ResourceRegistrar $server) {
245253 $server->resource('posts', PostController::class);
246254 $server->resource('tags', TagController::class);
247255 $server->resource('users', UserController::class);
@@ -348,7 +356,9 @@ For example, if we want to register routes for a `posts` resource's
348356` author ` , ` comments ` and ` tags ` relationships:
349357
350358``` php
351- $server->resource('posts')->relationships(function ($relationships) {
359+ use LaravelJsonApi\Laravel\Routing\Relationships;
360+
361+ $server->resource('posts')->relationships(function (Relationships $relationships) {
352362 $relationships->hasOne('author');
353363 $relationships->hasMany('comments');
354364 $relationships->hasMany('tags');
@@ -417,7 +427,8 @@ Use our short-hands of `related`, `show`, `update`, `attach` and `detach`
417427for the actions:
418428
419429``` php
420- $relationships->hasOne('author')
430+ $relationships
431+ ->hasOne('author')
421432 ->name('related', 'author.related')
422433 ->name('show', 'author.relationships.show');
423434// is identical to...
@@ -475,7 +486,7 @@ JSON:API routes:
475486JsonApiRoute::server('v1')
476487 ->prefix('v1')
477488 ->withoutMiddleware(\Illuminate\Routing\Middleware\SubstituteBindings::class)
478- ->resources(function ($server) {
489+ ->resources(function (ResourceRegistrar $server) {
479490 $server->resource('posts', PostController::class);
480491 });
481492```
0 commit comments