@@ -33,23 +33,23 @@ Recommended to use as base controller for other API controllers.
33
33
34
34
#### Methods
35
35
* function json($data, IDataTransformer $transformer = null): Response
36
- * function validate(Request $request, array $rules, array $messages = [ ] , array $customAttributes = [ ] )
37
36
38
37
** Example** :
39
38
``` php
40
39
class UserApiController extends BaseApiController
41
40
{
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
+ }
53
53
}
54
54
```
55
55
### JWTAuthApiController Authenticate API Controller. Uses JWT authentication
@@ -59,77 +59,23 @@ settings and underlying [tymon\jwt-auth](https://github.com/tymondesigns/jwt-aut
59
59
** Example** : routes\api.php:
60
60
``` php
61
61
app('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
+ });
66
66
```
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
+
82
68
### ForgotPasswordApiController, ResetPasswordApiController These controllers are responsible for handling password reset emails.
83
69
Utilize native Laravel password management without UI, in JSON API.
84
70
85
71
** Example** : routes\api.php:
86
72
``` 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
+ });
94
78
```
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.
133
79
134
80
## Contributing
135
81
1 . Create fork, checkout it
0 commit comments