2017-07-25 139 views
1

我正在制作简单的API与Laravel 5.4我有问题。我为测试创建了路由和一些数据,但是当我测试如果路由与Postman正常工作时,通过放入localhost:8888/{projectname}/api/v1/meeting它会显示我error 404 page not found。我究竟做错了什么?Laravel API 404错误

路由/ api.php

<?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' => '[email protected]' 
    ]); 

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

MeetingController

<?php  
namespace App\Http\Controllers;  
use Illuminate\Http\Request;  
use App\Http\Requests;  
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

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

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

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function destroy($id) 
    { 
     return "It works!"; 
    } 
} 

AuthController

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

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

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

命令php artisan route:list的输出:

+--------+-----------+--------------------------------------------+----------------------+-----------------------------------------------------+------------+ 
| Domain | Method | URI          | Name     | Action            | Middleware | 
+--------+-----------+--------------------------------------------+----------------------+-----------------------------------------------------+------------+ 
|  | GET|HEAD |/          |      | Closure            | web  | 
|  | POST  | api/v1/meeting        | meeting.store  | App\Http\Controllers\[email protected]  | api  | 
|  | GET|HEAD | api/v1/meeting        | meeting.index  | App\Http\Controllers\[email protected]  | api  | 
|  | POST  | api/v1/meeting/registration    | registration.store | App\Http\Controllers\[email protected] | api  | 
|  | DELETE | api/v1/meeting/registration/{registration} | registration.destroy | App\Http\Controllers\[email protected] | api  | 
|  | DELETE | api/v1/meeting/{meeting}     | meeting.destroy  | App\Http\Controllers\[email protected]  | api  | 
|  | PUT|PATCH | api/v1/meeting/{meeting}     | meeting.update  | App\Http\Controllers\[email protected]  | api  | 
|  | GET|HEAD | api/v1/meeting/{meeting}     | meeting.show   | App\Http\Controllers\[email protected]   | api  | 
|  | POST  | api/v1/user        |      | App\Http\Controllers\[email protected]   | api  | 
|  | POST  | api/v1/user/signin       |      | App\Http\Controllers\[email protected]   | api  | 
+--------+-----------+--------------------------------------------+----------------------+-----------------------------------------------------+------------+ 
+0

'api.php'路由已经以'/ api'作为前缀。你不需要再自己添加这个。使用你当前的设置,你的路由是'localhost:8888/{projectname}/api/api/v1/meeting' – fubar

+0

我试过也删除了带路由的api,它显示了同样的错误 –

+0

你不需要'/ { projectname}'在你的请求url中。 –

回答

1

在Laravel 5.4,您routes/api.php应该是这样的:

<?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' => '[email protected]' 
    ]); 

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

欲了解更多信息,请访问他们的文档here

+0

你是对的我改变了它,但仍然有404问题。也许有没有其他的问题与routes/api.php文件。 –

+0

啊你能给我什么你的服务器主机配置? – elegisandi

+0

现在一切正常 –

2

在5.4版本的API中的终点已添加所以没有必要添加 'API' 再次在URL中。

请更改来自:

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

} 

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

} 
+0

这不是这个路线的问题因为我改变它,因为你说,仍然有同样的麻烦 –

+0

@KonradUciechowski确定请尝试与本地主机:8888/{projectname} /index.php/api/v1/meeting –

+0

我试过这个和index.php,它显示404 –