Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

boyjarv's avatar

API Routes messed up - unable to post to: https://mydomain.com/api/allartworks

here is my api.php

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::group([
    'middleware' => 'api',
    'namespace' => 'App\Http\Controllers',
    'prefix' => 'auth'
], function($router) {
    Route::post('login', 'AuthController@login');
    Route::post('register', 'AuthController@register');
    Route::post('logout', 'AuthController@logout');
    Route::get('profile', 'AuthController@profile');
    Route::post('refresh', 'AuthController@refresh');
    header('Access-Control-Allow-Origin:  *');
    header('Access-Control-Allow-Methods:  POST, GET, OPTIONS, PUT, DELETE');
    header('Access-Control-Allow-Headers:  Content-Type, X-Auth-Token, Origin, Authorization'); 
});

Route::group([
    'middleware' => 'api',
    'namespace' => 'App\Http\Controllers'
], function($router) {
    Route::resource('todos', 'TodoController');
    Route::resource('artworks', 'ArtworkController');
    Route::resource('allartworks', 'ArtworkController@allArtwork');
    Route::resource('favefilms', 'FavFilmController');
    header('Access-Control-Allow-Origin:  *');
    header('Access-Control-Allow-Methods:  POST, GET, OPTIONS, PUT, DELETE');
    header('Access-Control-Allow-Headers:  Content-Type, X-Auth-Token, Origin, Authorization'); 
});

|        | GET|HEAD  | /                                 |                     | Closure                                                   | web        |
|        | POST      | api/allartworks                   | allartworks.store   | App\Http\Controllers\ArtworkController@allArtwork@store   | api        |
|        |           |                                   |                     |                                                           | auth:api   |
|        | GET|HEAD  | api/allartworks                   | allartworks.index   | App\Http\Controllers\ArtworkController@allArtwork@index   | api        |
|        |           |                                   |                     |                                                           | auth:api   |
|        | GET|HEAD  | api/allartworks/create            | allartworks.create  | App\Http\Controllers\ArtworkController@allArtwork@create  | api        |
|        |           |                                   |                     |                                                           | auth:api   |
|        | DELETE    | api/allartworks/{allartwork}      | allartworks.destroy | App\Http\Controllers\ArtworkController@allArtwork@destroy | api        |
|        |           |                                   |                     |                                                           | auth:api   |
|        | PUT|PATCH | api/allartworks/{allartwork}      | allartworks.update  | App\Http\Controllers\ArtworkController@allArtwork@update  | api        |
|        |           |                                   |                     |                                                           | auth:api   |
|        | GET|HEAD  | api/allartworks/{allartwork}      | allartworks.show    | App\Http\Controllers\ArtworkController@allArtwork@show    | api        |
|        |           |                                   |                     |                                                           | auth:api   |
|        | GET|HEAD  | api/allartworks/{allartwork}/edit | allartworks.edit    | App\Http\Controllers\ArtworkController@allArtwork@edit    | api        |
|        |           |                                   |                     |                                                           | auth:api   |

here is my ArtworkController method:

/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function allArtwork()
    {
        $artworks = Artwork::get(['id', 'title', 'description', 'status', 'primary_art', 'height', 'width', 'cost', 'live']);
        return response()->json($artworks->toArray());
    }
0 likes
5 replies
MichalOravec's avatar

It has to be

Route::resource('allartworks', 'ArtworkController');

or if you want only one route then

Route::get('allartworks', 'ArtworkController@allArtwork');
boyjarv's avatar

but the function is called: allArtwork()

MichalOravec's avatar

And what is this?

Route::get('allartworks', 'ArtworkController@allArtwork');
boyjarv's avatar

I'm with you, 1 controller per resource api

Please or to participate in this conversation.