其實,我有點困惑,同時使用Laravel API路由文件。 我的問題是 -Laravel 5 API路線
如果我需要訪問我的網站在使用laravel製作的其他平臺(如android應用程序)的數據,那麼我應該在api.php文件中創建不同的路線。
如果是,則我將聲明兩個路由和控制器對於每個請求,首先在api.php web.php和第二。這是對的嗎??
基本上,我想問的是我怎麼能做出一個API,這樣我就可以在網站上以及在其他平臺訪問數據?
我正在尋找一個很好的教程,但我沒有得到一個好。
其實,我有點困惑,同時使用Laravel API路由文件。 我的問題是 -Laravel 5 API路線
如果我需要訪問我的網站在使用laravel製作的其他平臺(如android應用程序)的數據,那麼我應該在api.php文件中創建不同的路線。
如果是,則我將聲明兩個路由和控制器對於每個請求,首先在api.php web.php和第二。這是對的嗎??
基本上,我想問的是我怎麼能做出一個API,這樣我就可以在網站上以及在其他平臺訪問數據?
我正在尋找一個很好的教程,但我沒有得到一個好。
理想情況下,API路由和Web路由應該完全不同,但如果您希望它是相同的,則不要在不同文件中定義路由,而只需在web.php中添加路由並從客戶端添加特殊參數並在控制器中,如果您獲取參數,然後返回JSON對象或返回視圖。
例如,
web.php
Route::get('getUsers','[email protected]');
UserController.php
...
public function getUsers(Request $request)
{
...
if ($request->has('api')) {
return $users; //API Route (Laravel will by Default return the JSON Response no need to do json_encode)
}
return view('pages.user_list'); //Normal Routes hence returning View
}
...
要求 正常請求
<Yourdomain>/getUsers
API請求
<Yourdomain>/getUsers?api=true
我希望幫助...
那麼如何我會送CSRF令牌API請求的情況下.. –
2選擇1)禁用CSRF驗證這些路由(不推薦),2)可以使一個API,你可以返回CSRF令牌,並在接下來的請求你可以簡單地從你的客戶端傳遞它。和令牌認證,您可以使用JWT驗證https://github.com/tymondesigns/jwt-auth –
寫您的API航線api.php
和網絡航線web.php
。
Api路由在路由中始終有名稱api
因此您可以區分路由。我在這裏提到,因爲@Akshay Khale提到了查詢參數的示例。
如果你想在API和Web上使用相同的控制器,Api請求總是有標題Content-Type : Json
和"Accept":"application/json"
,所以在你的控制器中你可以這樣做,如下所示。
public function getUsers(Request $request)
{
...
if ($request->wantsJson()) {
return response()->json($users, 200); //here why we are extending response object because using json() method you can send the status code with the response.
}
return view('pages.user_list'); //Normal Routes hence returning View
}
理想情況下,您的API路由將以API的可用格式(如JSON)返回數據。你的網路應該返回實際的網頁。 – Samsquanch
那麼,我應該爲api和網站有不同的路線和控制器嗎? –
的方式有很多人做到這一點,首先寫與API控制器的API,那麼你就寫你的web控制器爲使用來自API的數據。這是假設您的前端將被設置爲使用這些API(通過Vue或其他JS框架)。如果您不打算使用基於API的前端,那麼您將編寫完全獨立於API的Web控制器。 – Samsquanch