Cách sử dụng các tuyến API trong Laravel 5.3


93

Trong Laravel 5.3, các tuyến API đã được chuyển vào tệp api.php. Nhưng làm thế nào tôi có thể gọi một tuyến đường trong tệp api.php? Tôi đã cố gắng tạo một tuyến đường như thế này:

Route::get('/test',function(){
     return "ok"; 
});

Tôi đã thử các URL sau nhưng cả hai đều trả về ngoại lệ NotFoundHttpException:

  • http://localhost:8080/test/public/test
  • http://localhost:8080/test/public/api/test

Làm cách nào tôi có thể gọi đây là tuyến API?


Câu trả lời:


173

Bạn gọi nó bằng

http://localhost:8080/api/test
                      ^^^

Nếu bạn nhìn vào, app/Providers/RouteServiceProvider.phpbạn sẽ thấy rằng theo mặc định, nó đặt apitiền tố cho các tuyến API, tất nhiên bạn có thể thay đổi tiền tố này nếu muốn.

protected function mapApiRoutes()
{
    Route::group([
        'middleware' => 'api',
        'namespace' => $this->namespace,
        'prefix' => 'api',
    ], function ($router) {
        require base_path('routes/api.php');
    });
}

Bất kỳ ý tưởng làm thế nào để gọi điều đó trong laravel 5.4? Các tuyến đường api mặc định: Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); Tôi cố gắng localhost / app / api / user nhưng không làm việc
utdev

@utdev Bạn sử dụng giống hệt nhau. Xóa appphân đoạn khỏi URI của bạn. Nó sẽ giống dọc theo dònglocalhost/api/user
peterm


1

route / api.php

Route::get('/test', function () {
    return response('Test API', 200)
                  ->header('Content-Type', 'application/json');
});

Ánh xạ được định nghĩa trong nhà cung cấp dịch vụ App \ Providers \ RouteServiceProvider

protected function mapApiRoutes(){
    Route::group([
        'middleware' => ['api', 'auth:api'],
        'namespace' => $this->namespace,
        'prefix' => 'api',
    ], function ($router) {
        require base_path('routes/api.php');
    });
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.