@@ -33,23 +33,23 @@ Recommended to use as base controller for other API controllers.
3333
3434#### Methods
3535* function json($data, IDataTransformer $transformer = null): Response
36- * function validate(Request $request, array $rules, array $messages = [ ] , array $customAttributes = [ ] )
3736
3837** Example** :
3938``` php
4039class UserApiController extends BaseApiController
4140{
42- public function __construct(UserTransformer $userTransformer)
43- {
44- parent::__construct($userTransformer);
45- }
46- public function editUserProfile(Request $request, User $user): Response
47- {
48- $this->validate($request, $user->getRuels());
49- $user->fill($request->all());
50- $user->save();
51- return $this->json($user);
52- }
41+ public function __construct(UserTransformer $userTransformer)
42+ {
43+ parent::__construct($userTransformer);
44+ }
45+
46+ public function editUserProfile(Request $request, User $user): Response
47+ {
48+ $this->validate($request, $user->getRuels());
49+ $user->fill($request->all());
50+ $user->save();
51+ return $this->json($user);
52+ }
5353}
5454```
5555 ### JWTAuthApiController Authenticate API Controller. Uses JWT authentication
@@ -59,77 +59,23 @@ settings and underlying [tymon\jwt-auth](https://github.com/tymondesigns/jwt-aut
5959** Example** : routes\api.php:
6060``` php
6161app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'],
62- function (\Dingo\Api\Routing\Router $api) {
63- // Authentication $api->post('auth', 'AuthController@login'); // Login $api->put('auth', 'AuthController@refreshToken'); // Refresh expired token
64- $api->delete('auth', 'AuthController@logout')->middleware('api.auth'); // Logout
65- });
62+ function (\Dingo\Api\Routing\Router $api) {
63+ // Authentication $api->post('auth', 'AuthController@login'); // Login $api->put('auth', 'AuthController@refreshToken'); // Refresh expired token
64+ $api->delete('auth', 'AuthController@logout')->middleware('api.auth'); // Logout
65+ });
6666```
67- ### ResourceApiController
68- Controller for typical CRUD operations when you don't need many additional logic.
69- For using this functionality you can just create controller and set needed model class in property $modelClass
70- ** Example** :
71- ``` php
72- class CustomApiController extends ResourceApiController
73- {
74- /**
75- * Define model class that is managed by this controller.
76- *
77- * @var string
78- */
79- protected $modelClass = App\Models\User::class;
80- }
81- ```
67+
8268### ForgotPasswordApiController, ResetPasswordApiController These controllers are responsible for handling password reset emails.
8369Utilize native Laravel password management without UI, in JSON API.
8470
8571** Example** : routes\api.php:
8672``` php
87- app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'],
88- function (\Dingo\Api\Routing\Router $api) { $api->post('auth/password/reset', 'ForgotPasswordApiController@sendResetLinkEmail'); $api->put('auth/password/reset', 'ResetPasswordApiController@reset');});
89- ```
90- ## Routes registration examples:
91- ### Simple route
92- ``` php
93- $registrar->get('users', ApiController::class, 'list');
73+ app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'],
74+ function (\Dingo\Api\Routing\Router $api) {
75+ $api->post('auth/password/reset', 'ForgotPasswordApiController@sendResetLinkEmail');
76+ $api->put('auth/password/reset', 'ResetPasswordApiController@reset');
77+ });
9478```
95- In this case ApiController::list will be calling with default dependency injection.
96-
97- ### Route with parameters
98- ``` php
99- // Controller example
100- class ApiController {
101- public function show(int $id) {}
102- }
103- // Route example
104- $registrar->get('users/{id}', ApiController::class, 'show');
105- ```
106- In this case ApiController::show will receive directly parameter from url. Ex: /user/5
107-
108- ### Route with binding on controller side
109- ``` php
110- // Controller example
111- class ApiController {
112- public function show(User $user) {}
113- }
114- // Route example
115- $registrar->get('users/{user}', ApiController::class, 'show');
116- ```
117- In this case ApiController::show try to find Model user by id and if not exists throws ModelNotFoundException.
118-
119- ### Route with binding on route side
120- ``` php
121- // Controller example
122- class ApiController {
123- public function show(Model $user) {}
124- }
125- // Route example
126- $registrar->get('users/{user}', ApiController::class, 'show', null, ['user' => User::class]);
127- ```
128- In this case no matter what type hint in controller, container will be trying to give object of class that you pass in router registrar.
129- So if method has type hinting of class which not a parent for given in router, TypeError will be thrown.
130-
131- #### Note: In 2 last cases classes which uses for model bindings must implement Illuminate\Contracts\Routing\UrlRoutable otherwise this parameters
132- will be ignored.
13379
13480## Contributing
135811 . Create fork, checkout it
0 commit comments