关于php:Laravel API 404错误

Laravel API 404 error

我正在使用Laravel 5.4制作简单的API,但遇到了问题。 我创建了用于测试的路由和一些数据,但是当我通过放置localhost:8888/{projectname}/api/v1/meeting来测试路由是否与Postman一起正常工作时,会显示error 404 page not found。 我究竟做错了什么?

路线/api.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php    
Route::group(['prefix' => 'v1'], function() {
    Route::resource('meeting', 'MeetingController', [
        'except' => ['edit', 'create']
    ]);

    Route::resource('meeting/registration', 'RegistrationController', [
        'only' => ['store', 'destroy']
    ]);

    Route::post('user', [
        'uses' => 'AuthController@store'
    ]);

    Route::post('user/signin', [
        'uses' => 'AuthController@signin'
    ]);
});

会议控制器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php    
namespace App\\Http\\Controllers;    
use Illuminate\\Http\
equest;    
use App\\Http\
equests;    
class MeetingController extends Controller
{
    public function __construct()
    {
        // $this->middleware('name');
    }

    public function index()
    {
        return"It works!";
    }

    public function store(Request $request)
    {
        return"It works!";
    }

    public function show($id)
    {
        return"It works!";
    }

    public function update(Request $request, $id)
    {
        return"It works!";
    }

    public function destroy($id)
    {
        return"It works!";
    }

}

RegistrationController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
namespace App\\Http\\Controllers;

use Illuminate\\Http\
equest;

use App\\Http\
equests;

class RegistrationController extends Controller
{
    public function store(Request $request)
    {
        return"It works!";
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int $id
     * @return \\Illuminate\\Http\
esponse
     */

    public function destroy($id)
    {
        return"It works!";
    }
}

AuthController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    <?php

namespace App\\Http\\Controllers;

use Illuminate\\Http\
equest;

use App\\Http\
equests;

class AuthController extends Controller
{
    public function store(Request $request)
    {
        return"It works!";
    }

    public function signin(Request $request)
    {
        return"It works!";
    }
}

命令php artisan route:list的输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    +--------+-----------+--------------------------------------------+----------------------+-----------------------------------------------------+------------+
| Domain | Method    | URI                                        | Name                 | Action                                              | Middleware |
+--------+-----------+--------------------------------------------+----------------------+-----------------------------------------------------+------------+
|        | GET|HEAD  | /                                          |                      | Closure                                             | web        |
|        | POST      | api/v1/meeting                             | meeting.store        | App\\Http\\Controllers\\MeetingController@store        | api        |
|        | GET|HEAD  | api/v1/meeting                             | meeting.index        | App\\Http\\Controllers\\MeetingController@index        | api        |
|        | POST      | api/v1/meeting/registration                | registration.store   | App\\Http\\Controllers\
egistrationController@store   | api        |
|        | DELETE    | api/v1/meeting/registration/{registration} | registration.destroy | App\\Http\\Controllers\
egistrationController@destroy | api        |
|        | DELETE    | api/v1/meeting/{meeting}                   | meeting.destroy      | App\\Http\\Controllers\\MeetingController@destroy      | api        |
|        | PUT|PATCH | api/v1/meeting/{meeting}                   | meeting.update       | App\\Http\\Controllers\\MeetingController@update       | api        |
|        | GET|HEAD  | api/v1/meeting/{meeting}                   | meeting.show         | App\\Http\\Controllers\\MeetingController@show         | api        |
|        | POST      | api/v1/user                                |                      | App\\Http\\Controllers\\AuthController@store           | api        |
|        | POST      | api/v1/user/signin                         |                      | App\\Http\\Controllers\\AuthController@signin          | api        |
+--------+-----------+--------------------------------------------+----------------------+-----------------------------------------------------+------------+


与版本5.4中一样,已经在端点中添加了api,因此无需在网址中再次添加" api"。

请更改为:

1
2
3
Route::group(['prefix' => 'api/v1'], function() {

}

1
2
3
Route::group(['prefix' => 'v1'], function() {

}


在Laravel 5.4中,您的routes/api.php应该如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

Route::prefix('v1')->group(function () {
    Route::resource('meeting', 'MeetingController', [
        'except' => ['edit', 'create']
    ]);

    Route::resource('meeting/registration', 'RegistrationController', [
        'only' => ['store', 'destroy']
    ]);

    Route::post('user', [
        'uses' => 'AuthController@store'
    ]);

    Route::post('user/signin', [
        'uses' => 'AuthController@signin'
    ]);
});

有关更多信息,请在此处访问其文档。


请不要在路由中使用/ api,使其保持简单,例如

1
2
Route::group(['prefix' => 'v1'], function() { //code goes here}
php artisan route:list

如果路线中有任何错误,它将列出您的所有路线,因此此处不会列出。


你试一试

1
localhost:8888/{projectname}/public/api/v1/meeting

不要忘记public