2017-04-23 10 views
3

私は私のroutes/api.phpLaravel 5.4:APIのルートリスト

Route::middleware('api')->get('/posts', function (Request $request) { 
    Route::resource('posts','ApiControllers\PostsApiController'); 
}); 

に以下の行を持って、私はhttp://localhost:8000/api/postsを打つとき、私はそうのようroutes/web.phpに上記のルートを移動するとき、それは空白戻ってきた、しかし:

Route::group(['prefix' => 'api/v1'],function(){ 
    Route::resource('posts','ApiControllers\PostsApiController'); 
}); 

です。ウェブルートでリストを手放すこと

+--------+----------+-------------+------+---------+------------+ 
| Domain | Method | URI   | Name | Action | Middleware | 
+--------+----------+-------------+------+---------+------------+ 
|  | GET|HEAD | api/posts |  | Closure | api  | 
+--------+----------+-------------+------+---------+------------+ 

注:私はphp artisan route:clearとルートキャッシュファイルをクリアしていると私のroutes/web.phpが空で、routes/api.phpは、上記のルートを持っているとき、私のルートリストがphp artisan route:listが付属してリマインダーとして

大丈夫、うまく動作します。

私はここで間違っていますか?

+0

を作成していますどのようにここで

、ミドルウェアを削除してみては? APIのミドルウェア – webDev

+0

を使用しないでください。 – Gammer

+0

はい私の答えの記事で説明させてください – webDev

答えて

6

いけないAPIのルートのルートたとえば、次のミドルウェアapiを使用してご覧ください(あなたのapi.php中)

例1

Route::get('test',function(){ 
    return response([1,2,3,4],200); 
}); 

訪問

localhost/api/test 

としてこのルート例2(api認証が必要な場合は、トークンベースの認証方式NG laravelパスポート)

Route::get('user', function (Request $request) { 
    ///// controller 
})->middleware('auth:api'); 

あなたはこのルートのGET要求を行うことができますが、あなたはauth:apiミドルウェアが使用されているので、アクセストークンを渡す必要があります。

注:/app/http/kernel.php を見ると、あなたが1を作成しない限り

protected $routeMiddleware = [ 
//available route middlewares 
] 

がルートにこのファイルのミドルウェアのように(API)の種類(kernel.php)があってはなりません見つけることができ、なぜ、あなたはapiというミドルウェアを使用できないのですか?私は、RESTのAPI(api.phpに)

//All routes goes outside of this route group which does not require authentication 
Route::get('test',function(){ 
    return response([1,2,3,4],200); 

}); 
//following Which require authentication ................ 
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function(){ 
    Route::get('user-list',"Api\[email protected]"); 
    Route::post('send-fax', [ 
     'uses'=>'api\[email protected]', 
     'as'=>'send-fax' 
    ]); 
    Route::post('user/change-password', [ 
     'uses'=>'api\[email protected]', 
     'as'=>'user/change-password' 
    ]); 

}); 
+0

大丈夫、もし私がパスポートを使いたくないのなら、どちらが望ましいですか、JWTかOauth2? – Gammer

+0

私はJWTを使用していません。パスポートはoauthをベースにしています。パスポートはoauthサーバーを作成する最も簡単な方法です。 oauthは仕様です............ oauthサーバーがどのように動作し、パスポートは何ですか? – webDev

+0

愚かな質問、パスポートは無料ですか? – Gammer