2017-04-23 5 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'); 
}); 

작동합니다.

말씀 드리지만

나는 php artisan route:clear와 경로 캐시 파일을 삭제하고 내 routes/web.php이 비어 있고 routes/api.php 위의 경로가있는 경우 내 경로 목록 php artisan route:list와 함께 제공 :

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

참고 웹 노선 목록을 부분 괜찮아지고 잘 작동합니다.

내가 뭘 잘못하고 있니?

+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 을보고 당신이 하나를 작성하지 않는 한

protected $routeMiddleware = [ 
//available route middlewares 
] 

이 루트는이 파일에 대한 (kernel.php)에서 미들웨어의 등 (API) 종류가 없어야합니다 찾을 수 있습니다, 왜 미들웨어를 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