Laravel API routes - Same path, multiple methods - laravel

I want to make manually, some endpoints for a customer model.
I have these routes :
Route::get('customer/', 'CustomerRestController#all')->name('api_customer_all');
Route::get('customer/{id}', 'CustomerRestController#get')->name('api_customer_get');
Route::post('customer/', 'CustomerRestController#addOrUpdate')->name('api_customer_post');
Route::delete('customer/{id}', 'CustomerRestController#delete')->name('api_customer_delete');
If I call the post route with postman, the GET response is return !
Do you know why please ?
Thanks,

Related

How to get guarded_name of route I get from getRoutes method on Laravel

I want to get guarded_name of route I get from getRoutes() method on Laravel.
I can get route name by getName() method. But how to get wether the route is guarded for web or api of that route name?
I found answer from group discussion.
$route->getAction('middleware')
Thank you for your responses.
If you want to know the middleware applied on the route
Route::current()->computedMiddleware;

Laravel resource route doesn't display show in controller

According to the Laravel documentation:
This single route declaration creates multiple routes to handle a
variety of actions on the resource. The generated controller will
already have methods stubbed for each of these actions, including
notes informing you of the HTTP verbs and URIs they handle.
In my route I have this:
Route::resource('admin/companies', 'CompaniesController');
In my controller I have index, create, store, show etc.
Specifically in show I have this:
public function show(Company $company)
{
//
dd('hi');
}
I would expect when I hit this route:
http://127.0.0.1:8000/admin/companies/onecompany
for it to dd my response. Instead I get a 404 error. What am I doing wrong?
This route http://127.0.0.1:8000/admin/companies/onecompany is not a valid route that triggers resource functions according to Laravel documentaion.
The right URL that will trigger the show(Company $company) function is:
//This route will extract the `id` column from the model and show the required record.
http://127.0.0.1:8000/admin/companies/{company}
or
http://127.0.0.1:8000/admin/companies/{id}
Try an existing record in your database;
//Assuming there is a record with an id of 1
http://127.0.0.1:8000/admin/companies/1
cause of your problem seems related to Route model binding
,try it with id in uri.
to see list of your application's routes: php artisan route:list

laravel api route is not redirecting?

I am new to laravel,I had wrote api route code to register controller:
Route::post('test','Api\Auth\RegisterController#index');
In Register controller i had written simple code
public function index(Request $request)
{
return 'hello';
}
I am getting the output in postman like:
Sorry, the page you are looking for could not be found.
not hello.
Here the images:
1 3
Routes defined in the routes/api.php file are nested within a route
group by the RouteServiceProvider. Within this group, the /api URI
prefix is automatically applied so you do not need to manually apply
it to every route in the file.
You are trying to make a request to a route which does not exist.
In Postman
Change:
http://localhost:8080/App/api/test
To:
http://localhost:8080/api/test
You're telling laravel to route assoaciate '/api/test', not '/App/api/test', which is the adress you're trying to reach.
Also, if you plan to reach that address straight from the location bar of your browser, you should register the 'GET' method as well.
As you are returning something in function you need to use route as get() instead of post().
Route::get('test','Api\Auth\RegisterController#index');

Laravel SystemPay after the payment URL Post

I use https://paiement.systempay.fr for the credit card payments in my application
In the SystemPay rules i have to define an URL to callback when the transaction is finish the method is POST , systempay send me back all the information on the transaction and i need to get all the parameters in a $_POST VARIABLE
My question is : I would like to create a route like : mydomaine.com/checkout/verification.php and check with a var dump if i got the POST INFO from systemPay serveur.
How could i do this in the routes with a .php and check the result ?
Hope someone could help me

Laravel-4: Difference between RESTful Controllers and Resource Controllers in Laravel

Someone can please explain what is the difference between RESTful Controllers and Resource Controllers in Laravel ? I also have some Questions-
when should I use RESTful Controllers and when Resource Controllers?
Is there any naming convention Of Controller action for RESTful Controllers and Resource Controllers ?
If I use RESTful Controllers how could I define route for our controller ?
For building API which Controller Method is the best ?
Laravel Resource Controllers are defined as Route::controller('users', 'UserController'); while Restful Controllers are defined as Route::resource('photo', 'PhotoController');.
A restful controller follows the standard blueprint for a restful resource which mainly consists of:
GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{resource} show resource.show
GET /resource/{resource}/edit edit resource.edit
PUT/PATCH /resource/{resource} update resource.update
DELETE /resource/{resource} destroy resource.destroy
While the resource controller isn't opinionated like the restful controller. It allows you to create methods directly from you controller and it all gets automatically mapped to your routes:
public function getIndex()
{
// Route::get('/', 'Controller#getIndex');
}
public function postProfile()
{
// Route::post('/profile', 'Controller#postProfile');
}
Will automatically have the routes like Route::post('/profile', 'Controller#postProfile'); without explicitly defining it on the routes, much more of a helper if you will to avoid very long route files.
Doing php artisan routes will show you all your routes. You can test stuff out and use that command to see what routes gets automatically generated.
They are different concepts. In laravel, a resource controller defines all the default routes for a given named resource to follow REST principles.
So when you define a resource in your routes.php like:
Route::resource('users', 'UsersController');
The only thing Laravel does is define for you this routes:
Verb Path Action Route Name
GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{resource} show resource.show
GET /resource/{resource}/edit edit resource.edit
PUT/PATCH /resource/{resource} update resource.update
DELETE /resource/{resource} destroy resource.destroy
And expects that you define those methods on your controller. You can also use only/except clauses to remove unneeded routes:
Route::resource('user', 'UserController', ['except' => ['destroy']]);
More on this on Laravel's documentation.
It's just a distinction about the routing declaration. Instead of using one of those, manually define all of your routes.
Route::get(...);
Route::post(...);
Route::put(...);
Route::delete(...);
Route::patch(...);
It makes your routes file authoritative, easy to understand, and less buggy.
The documentation currently shows RESTful and Resource controllers to refer to the same thing.
Route::resource('resource', 'ResourceController');
It defines the routes for the following http request verbs mapped to the URI, controller action, and route. This allows you to use the predefined route names to connect to predefined controller actions and will map resource_id to {resource} as shown.
Verb URI Action Route Name
GET /resource/index.blade.php index resource
GET /resource/create.blade.php create resource.create
POST /resource store resource.store
GET /resource/{resource}/show.blade.php show resource.show
GET /resource/{resource}/edit.blade.php edit resource.edit
PUT/PATCH update resource.update
DELETE destroy resource.destroy
The term Implicit Controller seems to be the term to specify the use of
Route::controller('resource', 'ResourceController');
which will magically connect all routes to to ResourceController so that the http request verb (get/post) is prefixed in the function name used in the controller. This maps any URI to the controller action (function) with (get/put) in front but does not map resource_id to {resource} or route names.
class UserController extends BaseController {
public function getIndex()
{
//
}
public function postProfile()
{
//
}
public function anyLogin()
{
//
}
}
maps to
Verb URI Action Route Name
GET /index getIndex
POST /profile postProfile
GET /login anyLogin
POST /login anyLogin
DELETE /login anyLogin
It's up to you to decide which method to use if any for routing. There is some debate as to what is useful and if routing is even worth the confusion it can cause.
RESTful Resource Controllers
Resource controllers make it easier to build RESTful controllers around resources. For example, you may wish to create a controller that manages "photos" stored by your application. Using the controller:make command via the Artisan CLI and the Route::resource method, we can quickly create such a controller.
To create the controller via the command line, execute the following command:
php artisan controller:make PhotoController
Now we can register a resourceful route to the controller:
Route::resource('photo', 'PhotoController');
This single route declaration creates multiple routes to handle a variety of RESTful actions on the photo resource. Likewise, the generated controller will already have stubbed methods for each of these actions with notes informing you which URIs and verbs they handle.
Actions Handled By Resource Controller
http://laravel.com/docs/5.0/controllers#restful-resource-controllers

Resources